我在调整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颜色),并且每隔一段时间调整一次,绿色图像闪烁。
我缺少什么,是否需要在调整大小后更新一些隐藏的组件?
提前谢谢你,
暴雪
答案 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;