我有一个表格,我会从中获取位图并发送到小型嵌入式TFT显示器。然后,我会将来自显示器的触摸事件注入到表单中以激活控件。这一切都非常顺利,除非该表单不可见。如果它移出了可见桌面、最小化或关闭它,它就不会得到绘制事件,也永远不会更新。
有没有一种方法可以强制画布重绘自己,无论可见与否? 所有明显的事情,如调用repaint都不起作用。
有没有一种方法可以强制画布重绘自己,无论可见与否? 所有明显的事情,如调用repaint都不起作用。
您可以在窗体上使用 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;
在我的小例子中,我使用两个表单Form1
和Form2
创建了一个项目。在Form2
上,我放置了一个标签和计时器。
以下是Form2
的代码:
procedure TForm2.Timer1Timer(Sender: TObject);
begin
Label1.Caption := FloatToStr(now);
end;
并且它运作良好。