Delphi - TPaintBox - Größe ändern
Frage
Ich habe Probleme beim Ändern der Größe einer TPaintBox und beim Zeichnen darauf:
Auf meinem Formular (mit dem Namen FMain) habe ich eine TPaintBox (mit dem Namen DisplayImage) abgelegt, deren Größe ich zu ändern versuche, wenn die Größe des Formulars geändert wird.
Dazu habe ich eine OnResize()-Methode für FMain geschrieben (ich habe bestätigt, dass sie korrekt aufgerufen wird), in der ich versuche, die Größe des DisplayImage zu ändern:
procedure TFMain.FormResize(Sender: TObject);
begin
DisplayImage.Width := FMain.ClientWidth;
DisplayImage.Height := FMain.ClientHeight;
DisplayImage.Canvas.Brush.Color := clGreen;
DisplayImage.Canvas.Brush.Style := bsSolid;
DisplayImage.Canvas.Rectangle(0, 0, DisplayImage.Width, DisplayImage.Height);
end;
Meiner Meinung nach sollte der letzte Code ein grünes Vollbildrechteck über das gesamte Bild zeichnen, sodass es praktisch immer grün ist.Stattdessen erhalte ich ein graues Bild (genau wie die Standard-Hintergrundfarbe von Delphi) und ab und zu blinkt während der Größenänderung für den Bruchteil einer Sekunde das grüne Bild auf.
Was habe ich übersehen? Gibt es eine versteckte Komponente, die ich nach der Größenänderung aktualisieren muss?
Vielen Dank im Voraus,
Schneesturm
Lösung
Erstens, anstatt es zu tun
DisplayImage.Width := FMain.ClientWidth;
DisplayImage.Height := FMain.ClientHeight;
Bei jeder Größenänderung einfach einstellen Align := alClient
des Farbkastens.
Zweitens, um zum Farbkasten zu zeichnen, verwenden Sie das OnPaint
Veranstaltung des Malkastens:
procedure TFMain.DisplayImagePaint(Sender: TObject);
begin
DisplayImage.Canvas.Brush.Color := clGreen;
DisplayImage.Canvas.Brush.Style := bsSolid;
DisplayImage.Canvas.Rectangle(0, 0, DisplayImage.Width, DisplayImage.Height)
end;