强制 Delphi 表单在其不可见时绘制

Forcing a Delphi form to draw when its not visible

我有一个表单,我可以抓取一个位图发送到一个小型嵌入式 TFT 显示器。然后,我将显示器中的触摸事件注入到表单中以激活控件。除非表格不可见,否则这一切都非常有效。如果它从可见桌面上移开、最小化或关闭,它将不会获得绘制事件并且永远不会更新。

有没有办法强制 canvas 重新绘制自己可见或不可见? 所有明显的东西,比如所谓的重绘都不起作用。

是的,您可以在表单上使用 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;

而且我工作得很好。