delphi 如何将包含TRichEdit的表单截图保存到文件中?

o2rvlv0m  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(173)

我使用以下代码将窗体的屏幕截图保存到位图文件中:

var
  Bmp : Graphics.TBitmap;
begin
  Bmp := GetFormImage;
  try
    Bmp.SaveToFile( _DestFilePath );
  finally
    Bmp.Free;
  end;
end;

但是,当TRichEdit控件放置在窗体上时,它似乎不能很好地工作。最终图像中保存的不是TRichEdit控件及其所有内容,而是一个白色矩形。
如何获得包含非空白TRichEdit控件的表单的完整屏幕截图?
我用的是 Delphi 2009。

ryevplcw

ryevplcw1#

如果GetFormImage()失败,您应该尝试自行BitBlt()表单的内容,例如:

var bm := TBitmap.Create(ClientWidth, ClientHeight);
try
  BitBlt(bm.Canvas.Handle, 0, 0, ClientWidth, ClientHeight, Self.Canvas.Handle, 0, 0, SRCCOPY);
  // use bm as needed...
finally
  bm.Free;
end;

这为我成功地复制了一个带有TRichEdit的表单。

相关问题