热情软件屋

 

怎样在抓图时连鼠标一起抓


编号:QA000141
建立日期: 1998年11月26日 最后修改日期:1998年11月26日
所属类别:

戴悦:
    我的程序里需要抓图功能,怎样在抓图时连鼠标一起抓?

回答:

    抓图实际上是位图的复制,Windows在复制位图时是不会受鼠标光标的影响的。可以先抓图,然后在使用DrawIcon将鼠标光标画上去。下面就是一个例子。
    首先建立一个Form,在uses部分加上Clipbrd单元。
    然后在Click事件中输入以下代码:
    
    
procedure TForm1.FormClick(Sender: TObject);
    
var winHWND, hCur:integer;
    
winDC:integer;
    
rect:TRect;
    
AFormat : Word;
    
AData,APalette : THandle;
    
pt:TPoint;
    
fBitmap:TBitmap;
    
begin
    
hCur := GetCursor(); // 获得光标句柄
    
GetCursorPos(pt); // 记录光标位置
    
winHWND := GetDesktopWindow();
    
winDC := GetDC(winHWND);
    
GetWindowRect(winHWND, rect);
    
fBitmap := TBitmap.create;
    
fBitmap.width := rect.right-rect.left;
    
fBitmap.height := rect.bottom-rect.top;
    
BitBlt(fBitmap.canvas.handle, 0, 0, fBitmap.width, fBitmap.height, winDC, 0, 0, SRCCOPY);
    
DrawIcon(fBitmap.canvas.handle, pt.x, pt.y, hCur); // 画光标
    
ReleaseDC(winHWND, winDC);
    
fBitmap.SaveToClipBoardFormat(AFormat,AData,APalette);
    
Clipboard.SetAsHandle(AFormat,AData);
    
end;
    

    当你在Form上点一下,程序将截取屏幕图像,并将图像拷贝至剪贴板。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio