Delphi - TPAINTOBOX - Ridimensiona
Domanda
Sto avendo problemi a ridimensionare un tpaintbox e disegnando su di esso:
Sulla mia forma (denominata Fmain) Ho lasciato cadere un TPaintbox (denominato DisplayMage), che sto cercando di ridimensionare come il modulo è ridimensionato.
Per fare ciò ho scritto un metodo onResize () per Fmain (ho confermato che viene chiamato correttamente) in cui provo a ridimensionare il displayImmagine:
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;
.
Imho L'ultimo codice dovrebbe disegnare un rettangolo verde immagine completa sull'immagine completa, rendendolo efficacemente sempre verde.Invece ottengo un'immagine grigia (proprio come lo standard BG-Color of Delphi) e ogni volta in un po 'durante la ridimensiona per una divisione Second l'immagine verde lampeggia.
Che cosa mi manca, c'è un componente nascosto che devo aggiornare dopo il ridimensionamento?
Grazie in anticipo,
Blizzard
Soluzione
Prima di tutto, invece di fare
DisplayImage.Width := FMain.ClientWidth;
DisplayImage.Height := FMain.ClientHeight;
.
Su ciascuna ridimensiona, imposta semplicemente Align := alClient
della scatola di vernice.
In secondo luogo, per disegnare alla scatola della vernice, utilizzare l'evento OnPaint
della scatola di vernice:
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;
.