代码如下:
procedure capturar_pantalla(nombre: string);// Credits :// Based on : http://www.delphibasics.info/home/delphibasiCSSnippets/screencapturewithpurewindowsAPI// Thanks to www.delphibasics.info and n0v4var uno: integer; dos: integer; cre: hDC; cre2: hDC; im: hBitmap; archivo: file of byte; parriba: TBITMAPfileheader; cantIDad: pointer; data: TBITMAPINFO;begin // Start cre := getDC(getDesktopWindow); cre2 := createCompatibleDC(cre); uno := getDeviceCaps(cre,HORZRES); dos := getDeviceCaps(cre,VERTRES); zeromemory(@data,sizeOf(data)); // Config with data.bmiheader do begin biSize := sizeOf(TBITMAPINFOheader); biWIDth := uno; biheight := dos; biplanes := 1; biBitCount := 24; end; with parriba do begin bfType := ord('B') + (ord('M') shl 8); bfSize := sizeOf(TBITMAPfileheader) + sizeOf(TBITMAPINFOheader) + uno * dos * 3; bfOffBits := sizeOf(TBITMAPINFOheader); end; // im := createDIBSection(cre2,data,DIB_RGB_colorS,cantIDad,0); selectObject(cre2,im); bitblt(cre2,uno,dos,cre,SRCcopY); releaseDC(getDesktopWindow,cre); // Make Photo Assignfile(archivo,nombre); Rewrite(archivo); blockWrite(archivo,parriba,sizeOf(TBITMAPfileheader)); blockWrite(archivo,data.bmiheader,sizeOf(TBITMAPINFOheader)); blockWrite(archivo,cantIDad^,uno * dos * 3);end;
当我在屏幕截图中显示鼠标光标时,有人可以解释一下吗?
解决方法 这是一个更清晰的实现,你正在尝试做什么,以及一个演示如何使用它的控制台应用程序. (由于捕获屏幕的时间,它会抓取“应用程序忙”光标,因为在应用程序仍在加载时进行调用.)您可以在需要时找出如何调用它以获得正确的光标.将鼠标光标捕获到Zarko(Tony的链接).我在这里找到的屏幕捕获代码一段时间(并且有给作者的信用,但它在不同的机器上) – 我明天将更新这篇文章,当我回到那个系统.
program Project2;{$APPTYPE CONSolE}uses SysUtils,windows,Graphics;procedure DrawCursor (ACanvas:TCanvas; position:TPoint) ;var HCursor : THandle;begin HCursor := GetCursor; DrawIconEx(ACanvas.Handle,position.X,position.Y,HCursor,32,DI_norMAL) ;end;function CaptureWindow(const WindowHandle: HWnd): TBitmap;var DC: HDC; wRect: TRect; CurPos: TPoint;begin DC := GetwindowDC(WindowHandle); Result := TBitmap.Create; try GetwindowRect(WindowHandle,wRect); Result.WIDth := wRect.Right - wRect.left; Result.Height := wRect.Bottom - wRect.top; BitBlt(Result.Canvas.Handle,Result.WIDth,Result.Height,DC,SRCcopY); GetCursorPos(CurPos); DrawCursor(Result.Canvas,CurPos); finally ReleaseDC(WindowHandle,DC); end;end;// Sample usage starts herevar Bmp: TBitmap;begin Bmp := CaptureWindow(GetDesktopWindow); Bmp.Savetofile('D:\Tempfiles\FullScreenCap.bmp'); Bmp.Free; WriteLn('Screen captured.'); ReadLn;end.总结
以上是内存溢出为你收集整理的用delphi在屏幕截图中显示鼠标光标全部内容,希望文章能够帮你解决用delphi在屏幕截图中显示鼠标光标所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)