Delphi - Tpaintbox - Cambiar el tamaño
Pregunta
Estoy teniendo problemas para cambiar el tamaño de una caja de Tpaint y dibujarlo:
En mi forma (llamado FMain), dejé caer una caja de TPAINT (llamada DisplayImage), que estoy tratando de cambiar el tamaño de la forma cambiante.
Para hacerlo escribí un método ONRESIZE () para FMAIN (confirmé que se está llamando correctamente) en el que trato de cambiar el tamaño de la resplageImage:
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 El último código debe dibujar un rectángulo verde de imagen completa sobre la imagen completa, lo que lo hace de manera efectiva siempre verde.En su lugar, obtengo una imagen gris (al igual que el color BG estándar de Delphi) y de vez en cuando durante el tamaño durante el cambio de tamaño para una fracción de segundo, la imagen verde parpadea.
¿Qué falta, hay algún componente oculto que necesito actualizar después de cambiar el tamaño?
Gracias de antemano,
BLIZZARD
Solución
primero de todos, en lugar de hacer
DisplayImage.Width := FMain.ClientWidth;
DisplayImage.Height := FMain.ClientHeight;
En cada tamaño de tamaño, simplemente establezca Align := alClient
de la caja de pintura.
En segundo lugar, para dibujar en la caja de pintura, use el evento OnPaint
de la caja de pintura:
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;