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

¿Fue útil?

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;

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top