.NET获取当前鼠标所在位置像素的颜色
2011-04-12 23:11
495 查看
本文主要是获得鼠标当前所在位置像素的颜色。说到这里,大家可能还记得PhotoShop中吸管的功能,就是在图片的某一位置点击一下,就能获得那个位置像素的颜色。此程序和吸管的功能相似,不妨先来看下运行效果图:
其代码如下所示:
最后,希望转载的朋友能够尊重作者的劳动成果,加上转载地址:/article/4951170.html 谢谢。
完毕。^_^
其代码如下所示:
class CallWin32GDIAPI { private const int SM_CXSCREEN = 0x00000000;//屏幕的横坐标 private const int SM_CYSCREEN = 0x00000001;//纵坐标 private const int SRCCOPY = 0x00CC0020;//光栅操作一参数 [DllImport("GDI32.dll", EntryPoint = "DeleteDC")] public static extern IntPtr DeleteDC(IntPtr hdc); [DllImport("GDI32.dll", EntryPoint = "DeleteObject")] public static extern IntPtr DeleteObject(IntPtr hObject); [DllImport("GDI32.dll", EntryPoint = "BitBlt")] public static extern IntPtr BitBlt(IntPtr hdcDest,int nXDest,int nYDest, int nWidth,int nHight,IntPtr dhcSRC, int nXSRC,int nYSRC,int dwRop); [DllImport("GDI32.dll", EntryPoint = "CreateCompatibleBitmap")] public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight); [DllImport("GDI32.dll", EntryPoint = "CreateCompatibleDC")] public static extern IntPtr CreateCompatibleDC(IntPtr hdc); [DllImport("GDI32.dll",EntryPoint="SelectObject")] public static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj); [DllImport("User32.dll", EntryPoint = "GetDesktopWindow")] public static extern IntPtr GetDesktopWindow(); [DllImport("User32.dll", EntryPoint = "GetDC")] public static extern IntPtr GetDC(IntPtr hWnd); [DllImport("User32.dll", EntryPoint = "GetSystemMetrics")] public static extern IntPtr GetSystemMetrics(int nIndex); [DllImport("User32.dll", EntryPoint = "ReleaseDC")] public static extern IntPtr ReleaseDC(IntPtr hWnd,IntPtr hdc); /// <summary> /// 返回像素的颜色 /// </summary> /// <returns></returns> internal static Bitmap GetDesktop() { //屏幕分辨率宽与高,以像素为单位 int Xscreen; int Yscreen; IntPtr hBmp; //检索指定窗口句柄 IntPtr hdcScreen = GetDC(GetDesktopWindow()); //创建一个与设备兼容的内在设备上下文环境 IntPtr hdcCompatible = CreateCompatibleDC(hdcScreen); //得到屏幕分辨率宽与高,以像素为单位 Xscreen = (int)GetSystemMetrics(SM_CXSCREEN); Yscreen = (int)GetSystemMetrics(SM_CYSCREEN); //创建与设备相兼容的位图 hBmp = CreateCompatibleBitmap(hdcScreen, Xscreen, Yscreen); if (hBmp != IntPtr.Zero) { //将位图对象指定到相关的设备上下文环境中 IntPtr hOldBmp = (IntPtr)SelectObject(hdcCompatible, hBmp); //对位图的像素进行转换 BitBlt(hdcCompatible, 0, 0, Xscreen, Yscreen, hdcScreen, 0, 0, SRCCOPY); //SRCCOPY:将源矩形区域直接拷贝到目标矩形区域 SelectObject(hdcCompatible, hOldBmp); //释放系统资源 DeleteDC(hdcCompatible); ReleaseDC(GetDesktopWindow(), hdcScreen); //根据返回的句柄创建位图对象 Bitmap bmp = System.Drawing.Image.FromHbitmap(hBmp); DeleteObject(hBmp); //强制进行垃圾回收 GC.Collect(); return bmp; } return null; } }
最后,希望转载的朋友能够尊重作者的劳动成果,加上转载地址:/article/4951170.html 谢谢。
完毕。^_^
相关文章推荐
- 动态获取当前屏幕中光标所在位置的颜色
- jquery获取当前鼠标所在位置的坐标
- 动态获取当前屏幕中光标所在位置的颜色
- 动态获取当前屏幕中光标所在位置的颜色
- JS获取鼠标位置、当前元素所在位置
- 动态获取当前屏幕中光标所在位置的颜色
- delphi如何获取鼠标当前位置颜色
- 动态获取当前屏幕中光标所在位置的颜色
- [转] 动态获取当前屏幕中光标所在位置的颜色
- C#动态获取当前屏幕中光标所在位置的颜色
- 动态获取当前屏幕中光标所在位置的颜色
- js获取鼠标当前所在页面位置
- VB 6获取鼠标当前位置API
- .Net C# WinForm -- 获取TextBox当前焦点所在位置,插入文本,选中文本
- js 获取当前浏览器所在的位置
- jquery中获取当前鼠标的x、y位置位置
- js-获取鼠标光标相对于整个页面的当前位置
- WinForm中获取鼠标当前位置
- PHP获取当前所在目录位置的方法
- 获取鼠标点相对于各屏幕、窗体和当前控件的位置