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

时间:2015-04-15 22:12:39

标签: delphi canvas vcl

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

有没有办法强制画布重绘自己可见? 所有明显的事情,如称为重绘都不起作用。

1 个答案:

答案 0 :(得分:3)

是的,您可以在表单上使用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上我放置了一个标签和Timer。

以下是Form2

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

我的思绪很好。