我想知道抓图时连鼠标也一起抓的方法和代码(100分)

  • 主题发起人 Delphi新手1.0
  • 开始时间
D

Delphi新手1.0

Unregistered / Unconfirmed
GUEST, unregistred user!
麻烦给个例子
 
抓图实际上是位图的复制,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上点一下,程序将截取屏幕图像,并将图像拷贝至剪贴板。
 
接受答案了.
 

Similar threads

D
回复
0
查看
820
DelphiTeacher的专栏
D
D
回复
0
查看
769
DelphiTeacher的专栏
D
D
回复
0
查看
757
DelphiTeacher的专栏
D
顶部