繁体   English   中英

Delphi-TPaintBox-调整大小

[英]Delphi - TPaintBox - Resize

我在调整TPaintBox的大小并在其上绘图时遇到问题:

在我的窗体(名为FMain)上,我放下了一个TPaintBox(名为DisplayImage),我试图在调整窗体大小时对其进行调整。

为此,我为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;

恕我直言,最后一个代码应该在整个图像上绘制一个全图绿色矩形,使其实际上始终为绿色。 取而代之的是,我得到一个灰色图像(就像Delphi的标准bg-color一样),并且在调整大小的过程中不时地偶尔出现绿色图像闪烁。

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

先感谢您,

暴风雪

首先,不要做

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

在每次调整大小时,只需设置绘画框的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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM