Irgendwie habe ich da ein Verständnissproblem...
Delphi-Quellcode:
if fBrushBitmap.Bitmap.Empty = false then
Canvas.Brush.Bitmap.Assign(fBrushBitmap.Bitmap);
Canvas.Rectangle(0, 0, Width, Height);
Canvas.Brush.Bitmap.Free;
Oben: BMP.Assign...
Unten: BMP.Free...
Ich kenne nun deinen kompletten Code nicht, aber nach dem unteren Free zeigt der Pointer des BMP doch irgendwo in de Wald. Das nächste Assign wird dann auf Basis dieses Pointers ausgeführt. Ausserdem erfolgt der Free auch dann, wenn oben nichts zugewiesen wurde.