Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Delphi窗体不可见时强制其绘制_Delphi_Canvas_Vcl - Fatal编程技术网

在Delphi窗体不可见时强制其绘制

在Delphi窗体不可见时强制其绘制,delphi,canvas,vcl,Delphi,Canvas,Vcl,我有一个表格,我刮一个位图发送到一个小的嵌入式TFT显示器。然后,我将触摸事件从显示器注入表单以激活控件。这一切都非常有效,除非表单不可见。如果将其移出可见桌面、最小化或关闭,则不会获得绘制事件,也不会更新 有没有办法强制画布重新绘制自身可见或不可见? 所有明显的事情,如重新绘制,都不起作用。是的,您可以在表单上使用painto方法: procedure TForm1.Button1Click(Sender: TObject); var Bitmap: TBitmap; begin Bi

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

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

是的,您可以在表单上使用
painto
方法:

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
。在表格2上,我放置了一个标签和计时器

这是
Form2

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

而且我做得很好

我总是忘记画画的方法。谢谢