Delphi - TPaintBox - 调整大小

ThE*_*arD 1 delphi resize onresize paintbox

我在调整TPaintBox的大小并绘制它时遇到问题:

在我的表单(名为FMain)上,我删除了一个TPaintBox(名为DisplayImage),我试图在调整Form大小时调整大小.

为此,我为FMain写了一个OnResize()方法(我确认它被正确调用),我尝试调整DisplayImage的大小:

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;
Run Code Online (Sandbox Code Playgroud)

恕我直言,最后一个代码应该在整个图像上绘制一个全图像绿色矩形,使其有效地始终为绿色.相反,我得到一个灰色图像(就像Delphi的标准bg颜色),每隔一段时间调整一次,绿色图像闪烁.

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

先感谢您,

暴风雪

And*_*and 8

首先,而不是做

DisplayImage.Width := FMain.ClientWidth;
DisplayImage.Height := FMain.ClientHeight;
Run Code Online (Sandbox Code Playgroud)

在每个调整大小时,只需设置Align := alClient绘画框.

其次,要绘制到绘图框,请使用绘图框的OnPaint事件:

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;
Run Code Online (Sandbox Code Playgroud)