TForm.GetFormImage 可快速獲取窗體客戶區的位圖,配合 TBitmap.SaveToFile 與 Clipboard.SetAsHandle 即可實現保存與複製。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses Clipbrd;
{ 保存為圖片文件 }
procedure TForm1.Button1Click(Sender: TObject);
var
bit: TBitmap;
begin
bit := TBitmap.Create;
try
bit.Assign(Self.GetFormImage);
bit.SaveToFile('c:\temp\img1.bmp');
finally
bit.Free;
end;
end;
{ 一行代碼完成保存 }
procedure TForm1.Button2Click(Sender: TObject);
begin
Self.GetFormImage.SaveToFile('c:\temp\img2.bmp');
end;
{ 複製到剪貼簿 }
procedure TForm1.Button3Click(Sender: TObject);
var
Format: Word;
Data: Cardinal;
APalette: HPALETTE;
begin
GetFormImage.SaveToClipboardFormat(Format, Data, APalette);
Clipboard.SetAsHandle(Format, Data);
end;
end.
GetFormImage 返回窗體客戶區的快照,不含邊框、標題欄。Clipbrd 單元,調用 SaveToClipboardFormat 獲取格式數據,再用 SetAsHandle 放入。