我有问题大小调整TPaintbox并绘制它:

在我的表单上(命名为fmain)我删除了一个tpaintbox(命名的displayImage),我试图随着表单调整大小的调整大小。

要做到我为fmain写了一个onresize()方法(我确认它被正确调用),我试图调整显示中的大小:

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最后一个代码应该在完整的图像上绘制全图像绿色矩形,从而有效地使其成为绿色。相反,我获得灰色图像(就像Delphi的标准BG颜色),并且每次偶尔都在调整瞬间的大小期间,绿色图像闪烁。

我缺少的是什么,在调整大小后我需要更新一些隐藏组件吗?

提前谢谢,

暴雪

有帮助吗?

解决方案

首先,而不是做

DisplayImage.Width := FMain.ClientWidth;
DisplayImage.Height := FMain.ClientHeight;
.

在每个调整大小,只需设置油漆盒的生成频率仪。

其次,要绘制到油漆盒,请使用油漆盒的Align := alClient事件:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top