Delphi截图并加上鼠标

Delphi截图并加上鼠标

操作方法

  • 01

    procedure TForm1.Button1Click(Sender: TObject);var    Bitmap: TBitmap;    Canvas: TCanvas;    DC: HDC;    Cursor: TIcon;    CurPoint: TPoint;begin    Bitmap := TBitmap.Create;    Bitmap.Width := Screen.Width;    Bitmap.Height := Screen.Height;    Canvas := TCanvas.Create;    DC := GetDC(0);    Canvas.Handle := DC;    Cursor := TIcon.Create;    Bitmap.Canvas.CopyRect(Bitmap.Canvas.ClipRect, Canvas, Bitmap.Canvas.ClipRect);    GetCursorPos(CurPoint);    Cursor.Handle := GetCursor;    Bitmap.Canvas.Draw(CurPoint.X, CurPoint.Y, Cursor);    Image1.Picture.Bitmap.Assign(Bitmap);    Cursor.Free;    Bitmap.Free;    Canvas.Free;    ReleaseDC(0, DC);end;

  • 02

    ===================代码二========================procedure My_GetScreenToBmp(DrawCur:Boolean;StreamName:TMemoryStream);varMybmp:Tbitmap;Cursorx, Cursory: integer;dc: hdc;Mycan: Tcanvas;R: TRect;DrawPos: TPoint;MyCursor: TIcon;hld: hwnd;Threadld: dword;mp: tpoint;pIconInfo: TIconInfo; begin  Mybmp := Tbitmap.Create; {建立BMPMAP }  Mycan := TCanvas.Create; {屏幕截取}  dc := GetWindowDC(0);try  Mycan.Handle := dc;  R := Rect(0, 0,  Screen.Width,Screen.Height{GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics  (SM_CYSCREEN)});  Mybmp.Width := R.Right;  Mybmp.Height := R.Bottom;  Mybmp.Canvas.CopyRect(R, Mycan, R);finally  releaseDC(0, DC);end;  Mycan.Handle := 0;Mycan.Free; if DrawCur then {画上鼠标图象}begin  GetCursorPos(DrawPos);  MyCursor := TIcon.Create;  getcursorpos(mp);  hld := WindowFromPoint(mp);  Threadld := GetWindowThreadProcessId(hld, nil);  AttachThreadInput(GetCurrentThreadId, Threadld, True);  MyCursor.Handle := Getcursor();  AttachThreadInput(GetCurrentThreadId, threadld, False);  GetIconInfo(Mycursor.Handle, pIconInfo);  cursorx := DrawPos.x - round(pIconInfo.xHotspot);  cursory := DrawPos.y - round(pIconInfo.yHotspot);  Mybmp.Canvas.Draw(cursorx, cursory, MyCursor); {画上鼠标}  DeleteObject(pIconInfo.hbmColor);{GetIconInfo 使用时创建了两个bitmap对象. 需要手工释放这两个对象}  DeleteObject(pIconInfo.hbmMask);{否则,调用他后,他会创建一个bitmap,多次调用会产生多个,直至资源耗尽}  Mycursor.ReleaseHandle; {释放数组内存}  MyCursor.Free; {释放鼠标指针}end;  Mybmp.PixelFormat:=pf8bit;  //256色//Mybmp.SaveToFile(Filename);  Mybmp.SaveToStream(StreamName);Mybmp.Free; end;

(0)

相关推荐

  • QQ截图截取右键鼠标菜单图片技巧

    大家都知道QQ截图非常的方便,可是还是有一些功能不是很完善,比方说,鼠标右键菜单后,打开截图,右键菜单就消失了,那么,如何截图带有鼠标右键菜单的图片呢,方法其实很简单,来看看小编的技巧吧。 方法如下: ...

  • ubuntu16.04系统如何带鼠标截图

    使用ubuntu工作中经常会用到桌面截图,有时候截图需要把鼠标也截取下来,这个时候我们可以使用gnome-screenshot截图. 1.桌面上右键"打开终端". 2.然后就会打开 ...

  • ubuntu16.04系统怎么带鼠标截图?

    使用ubuntu工作中经常会用到桌面截图,有时候截图需要把鼠标也截取下来,这个时候我们可以使用gnome-screenshot截图. 1.桌面上右键“打开终端”. 2.然后就会打开终端窗口. 3.安装 ...

  • 阿里旺旺怎么发截图?阿里旺旺发截图教程

    随着现在网上购物越来越流行,阿里旺旺聊天软件被越来越多的人使用。但是一些新用户相向对方发一些截图时却为难了,因为不知道阿里旺旺怎么发截图。小编将演示阿里旺旺发截图教程,很多刚开始使用阿里旺旺的朋友不是 ...

  • Ubuntu截图工具gnome-screenshot使用教程

    Ubuntu自带的截图工具非常好用,可以自已设置各种截图的快捷键,下面我们一起来了解一下这个截图工具gnome-screenshot 帮助命令 [plain] view plaincopy #查看这个 ...

  • 介绍Win7的三种截图技巧

    今天向大家介绍一些实用的Win7截图技巧,在你需要别人协助或需要发屏幕图片给别人的时候,非常管用的截图方法,一共三种,下面慢慢说来。 第一种:使用Windows7自带的截图工具,它一般存在于“附件”中 ...

  • 下载截图工具不如学会使用电脑自带的截图工具

    我们经常需要使用截图工具来截取一些图片来保存,但是其实我们应该都知道我们电脑上其实都是有截图工具的,只要我们学会使用电脑自带的截图工具,那么也就不需要去使用各种网上的截图工具了,费时费流量还浪费资源. ...

  • 360软件助手的截图软件使用全解

    不必另外下载软件,只要你用360安全卫士就可以有的截图软件! 不用360软件的,请绕过,嘻嘻 添加360软件助手 01 打开360安全卫士,看右下角区域,如果已经安装了360软件助手,直接点击打开 0 ...

  • 如何进行电脑截图截屏

    如何进行电脑截图截屏 操作方法 01 一.在键盘右上侧有一个键print screen sys rq键(打印屏幕),可以用它将显示屏显示的画面抓下来,复制到"剪贴板"中,然后再把图 ...