Einzelnen Beitrag anzeigen

Benutzerbild von Daniela.S
Daniela.S

Registriert seit: 1. Mär 2008
Ort: Niederösterreich
224 Beiträge
 
Delphi XE4 Enterprise
 
#4

AW: Oberfläche wird nicht vollständig aktualisiert

  Alt 16. Aug 2010, 13:43
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;
  Mit Zitat antworten Zitat