【问题标题】:Forcing a Delphi form to draw when its not visible强制 Delphi 表单在其不可见时进行绘制
【发布时间】:2015-04-15 22:12:38
【问题描述】:

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

有没有办法强制画布重绘自己可见或不可见? 所有像重绘这样明显的东西都不起作用。

【问题讨论】:

    标签: delphi canvas vcl


    【解决方案1】:

    是的,您可以在表单上使用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 方法。谢谢。
    猜你喜欢
    • 2012-12-22
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多