0
我有问题,调整大小TPaintBox并在其上绘制:德尔福 - 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;
恕我直言,过去的代码应该画一个全在整个图像上呈现绿色矩形,使其始终呈绿色。相反,我得到一个灰色的图像(就像德尔福的标准bg颜色),每隔一段时间,在调整大小的瞬间,绿色图像闪烁起来。
我错过了什么,是否有一些隐藏的组件我需要更改大小后更新?
谢谢你在前进,
暴雪
谢谢,工作就像一个魅力:) 但无论如何,应该可以借鉴的画布,或者OnPaint事件是否会覆盖我的绘图? – 2010-07-13 21:21:11
您*正在绘制到画布上。你不需要*做'OnPaint'(即使这是个好主意) - 你可以在Button1Click或类似的东西上做。然而,调整形式是一个相当微妙的时间做绘画。可能有一个'WM_ERASEBKGND'或类似的东西来解除你的绘画。 – 2010-07-13 21:27:59
@ThE - (除了Andreas的评论)这样想:OnPaint在PaintBox需要绘画时被调用,但如果你不在OnPaint中绘制,你的绘图将被f.i.当你在窗体前放置另一个窗口时。文档中有一个显示不同之处的示例:http://docwiki.embarcadero.com/CodeSamples/en/OnPaint_%28Delphi%29 – 2010-07-14 00:37:56