Delphi - TPaintBox - 调整大小

时间:2010-07-13 21:07:08

标签: 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;

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

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

提前谢谢你,

暴雪

1 个答案:

答案 0 :(得分:7)

首先,而不是做

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;