当Delphi窗体不可见时强制其进行绘制

3
我有一个表格,我会从中获取位图并发送到小型嵌入式TFT显示器。然后,我会将来自显示器的触摸事件注入到表单中以激活控件。这一切都非常顺利,除非该表单不可见。如果它移出了可见桌面、最小化或关闭它,它就不会得到绘制事件,也永远不会更新。
有没有一种方法可以强制画布重绘自己,无论可见与否? 所有明显的事情,如调用repaint都不起作用。
1个回答

4

您可以在窗体上使用 PaintTo 方法:

procedure TForm1.Button1Click(Sender: TObject);
var
  Bitmap: TBitmap;
begin
  Bitmap := TBitmap.Create;
  Bitmap.Width := Form2.Width;
  Bitmap.Height := Form2.Height;

  Form2.PaintTo(Bitmap.Canvas, 0, 0);
  Image1.Picture.Assign(Bitmap);
  Bitmap.Free;
end;

在我的小例子中,我使用两个表单Form1Form2创建了一个项目。在Form2上,我放置了一个标签和计时器。

以下是Form2的代码:

procedure TForm2.Timer1Timer(Sender: TObject);
begin
  Label1.Caption := FloatToStr(now);
end;

并且它运作良好。


我总是忘记PaintTo方法。谢谢。 - Martin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接