请问如何将程序界面保存为图片?(100分)

  • 主题发起人 主题发起人 liugaohui
  • 开始时间 开始时间
L

liugaohui

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何将程序界面保存为图片?谢谢回复!
 
最大化抓屏行不?
 
不太好的
 
那就用GetWindowDC试试
 
请问有示例吗?谢谢[:)][:)]
 
三。当前工作窗口的抓屏:
当你想抓取当前正激活的窗口,你会怎么做呢,你可以按Ctrl+PrintScreenSysRp.即可以抓 下这个口了。但我们要用程序来实现,怎么做呢,其实非常简单,就是获得这个活动窗口的句柄,再根据这个句柄到该窗口的设备描述表,这样就可以画出这个窗口 了。那么要获得当前工作的窗口是要用到什么函数呢,主要是用到这样一个API:GetForegroundWindow(),它返回当前正在工作的窗口的 句柄。好了,现在给出代码吧:
procedure TForm1.GetActiveWndImg(b:TBitmap);
var C:TCanvas; H:HDC; R:TRect; hand:THandle;
begin
C:=TCanvas.Create;
Hand:= GetForegroundWindow();
if hand=0 then exit;
H:=GetWindowDC(Hand);//取得这个窗口的句柄
try
GetWindowRect(hand,R);//取得这个窗口的大小,将其赋给位图对象
B.Width:=R.Right-R.Left;
B.Height:=R.Bottom-R.Top;
C.Handle:=H;
B.Canvas.CopyRect(Rect(0,0,B.Width,B.Height),C
,Rect(0,0,B.Width,B.Height));
finally
C.Free;
ReleaseDC(Hand, H);
end;
end;
这个运行不起来?
 
那位帮忙看看,谢谢了
 
//***************************************************************
//*作者:刘红军 李传波
//*Email:lhjlgy@263.net
//*
//*Delphi园地 http://mydelphi.8u8.com 2002.9.18
//***************************************************************

procedure TForm1.Timer1Timer(Sender: TObject);
var
Bild:TBitmap;
c:TCanvas;
r,t:TRect;
h:THandle;
ExeFilePath:string;
begin
ExeFilePath:=ExtractFilePath(Application.ExeName);
c:=TCanvas.Create;
c.Handle:=GetWindowDC(GetDesktopWindow);
//获得当前活动窗口的句柄
h:=GetForeGroundWindow;
Bild:=TBitmap.Create;
if h<>0 then
//结构t保存该窗口的左上角和右下角的坐标值(相对于屏幕左上角)
GetWindowRect(h,t);
try
r:=Rect(0,0,t.Right-t.Left,t.Bottom-t.Top);
Bild.Width:=t.Right-t.Left;
Bild.Height:=t.Bottom-t.Top;
Bild.Canvas.CopyRect(r,c,t);
//抓屏结果保存在与EXE相同目录下
Bild.SaveToFile(ExeFilePath+'screen.bmp');
finally
Bild.Free;
end;
//将文件转换成JPG格式,以减少磁盘空间的占用
BMPToJPG(ExeFilePath+'screen.bmp');
end;


请问如果知道左上角和右下角的坐标位置,该如何修改程序?谢谢
 
多人接受答案了。
 
后退
顶部