1

我在调整 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 一样),并且在调整大小期间每隔一段时间,绿色图像就会闪烁。

我错过了什么,调整大小后是否需要更新一些隐藏组件?

先感谢您,

暴风雪

4

1 回答 1

8

首先,而不是做

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;
于 2010-07-13T21:15:10.573 回答