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

È stato utile?

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;
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top