NO.1[300] 再次请教程序界面如何保存成图片?(300)

  • 主题发起人 主题发起人 liugaohui
  • 开始时间 开始时间
你是本身运行的程序自动保存他的界面图片,还是,其他程序去抓你运行的程序的图片???
 
如果是程序自动的话,可以加个时间控件,在里面加下面的代码procedure TForm1.Timer1Timer(Sender: TObject);begin application.restore; // 程序最小化后还原,就是出现的意思 Try GetFormImage.SaveToFile(FormatDatetime('yyyymmdd hhmmsszzz',Now) + '.Bmp'); except ; End; application.Minimize; // 执行完了后程序自动最小化end;
 
我试过了,没问题...就是界面保存的时候会闪一下
 
我觉得:程序最小化或者隐藏的时候windows是不会绘制程序界面的,自然无法保存图片。所以你只能采取asnychen方法,或者强迫windows重新绘制程序界面(不知道有没有相应函数)
 
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls,jpeg, ExtCtrls;type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; RichEdit1: TRichEdit; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1; function PrintWindow(hwnd:HWND;hdcBlt:HWND;nFlags:word ):boolean;stdcall;external 'user32.dll';implementation{$R *.dfm}procedure PrintBakWnd(H:THandle); //H为要抓拍的窗口的句柄var DC:HDC; H1:HBITMAP; DC1:HDC; ScreenMap:TBitmap; R:TRect;begin DC:=GetWindowDC(H); GetWindowRect(H,R); H1:=CreateCompatibleBitmap(DC,r.Right-r.Left,r.Bottom-r.Top); DC1:=CreateCompatibleDC(DC); SelectObject(DC1,H1); PrintWindow(H,DC1,0); ScreenMap:=TBitmap.Create; ScreenMap.Handle:=H1; ScreenMap.SaveToFile('D:/[ON]liugaohui/后台保存3/'+FormatDateTime('YYYYMMDD-HHMMSS',Now)+'.bmp'); ScreenMap.Free; DeleteDC(DC); DeleteDC(DC1);end;procedure TForm1.Timer1Timer(Sender: TObject);varlgh:THandle;beginlgh:=form1.Handle; PrintBakWnd(lgh);end;最小化时是黑屏,挡住时可以用?是不是声明有问题?谢谢
 
var bmp: TBitmap; h: THandle; r: TRECT;begin GetwindowRect(h,r); bmp:=TBitmap.Create; bmp.Width:=r.right-r.left; bmp.Height:=r.Bottom-r.Top; BMP.pixelformat:=pf32bit; PrintWindow(h, bmp.Canvas.Handle,0); bmp.SaveToFile(xxxxx);
 
to bb1111:抓不到图片?空白
 
窗口的句柄 h 要>0
 
有窗口句柄还抓什么屏啊?直接把其下所有控件的值读出来保存到文件里不是更好么?至少还可以复制粘贴而且比图片小很多delphi有很好的rtti反射机制即使是你需要枚举每个控件的所有属性值都不是难事msn:ball_cao@hotmail.com
 
这个问题还没解决吗
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
796
DelphiTeacher的专栏
D
D
回复
0
查看
654
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部