Also ich würde mal Paint in den protected Bereich verschieben.
Delphi-Quellcode:
protected
{ Protected-Deklarationen }
procedure Paint; override;
Inherited ist eigentlich nicht notwendig, da du, wenn du den Hintergrund löscht, nichts aus der Originalroutine benötigst.
Besser wäre es in eine temporäre Bitmap zu zeichnen und dann mit BitBlt auf einmal zu veröffentlichen. Das minimiert auch lästiges Flackern.
Delphi-Quellcode:
procedure TMyImage.Paint();
var
bmp : TBitmap;
begin
// temporäres Bitmap erstellen
bmp := TBitmap.Create;
try
// Größe festlegen
bmp.Width := Self.Width;
bmp.Height := Self.Height;
// Hintergrund weiss färben
with bmp.Canvas do begin
Brush.Color := clWhite;
Brush.Style := bsSolid;
FillRect( Rect( 0, 0, bmp.Width, bmp.Height ) );
end;
// jetzt alles in bmp.Canvas zeichnen
// zum Abschluss auf den richtigen Canvas zeichnen
BitBlt( Self.Canvas.Handle, 0, 0, Self.Width, Self.Height,
bmp.Canvas.Handle, 0, 0, SRCCOPY );
finally
FreeAndNil( bmp );
end;
end;