鼠标颜色:C#获取鼠标所指像素的颜色
来源: 发布时间:星期五, 2009年1月9日 浏览:19次 评论:0
1.创建 个C# windows应用 2.添加 个windows表单Label到Form1.cs 3.单击label1Control控件然后更改Text属性为空 4.更改BorderStyle属性为FixedSingle 5.右键单击Form1.cs 然后点击View Code 添加下面Using语句到Form1.cs源码 顶部 6.using .Runtime.InteropServices; 注意该步骤添加必要 引用来 InteropServices 和思路方法 7.private Bitmap myBitmap; 添加下面 Win32APICall 类到Form1.cs中 Form1类后面 public Win32APICall { [DllImport("gdi32.dll",EntryPo="DeleteDC")] public extern IntPtr DeleteDC(IntPtr hdc); [DllImport("gdi32.dll",EntryPo="DeleteObject")] public extern IntPtr DeleteObject(IntPtr hObject); [DllImport("gdi32.dll",EntryPo="BitBlt")] public extern bool BitBlt(IntPtr hdcDest, nXDest, nYDest, nWidth, nHeight,IntPtr hdcSrc, nXSrc, nYSrc, dwRop); [DllImport ("gdi32.dll",EntryPo="CreateCompatibleBitmap")] public extern IntPtr CreateCompatibleBitmap(IntPtr hdc, nWidth, nHeight); [DllImport ("gdi32.dll",EntryPo="CreateCompatibleDC")] public extern IntPtr CreateCompatibleDC(IntPtr hdc); [DllImport ("gdi32.dll",EntryPo="SelectObject")] public extern IntPtr SelectObject(IntPtr hdc,IntPtr hgdiobjBmp); [DllImport("user32.dll", EntryPo="GetDesktopWindow")] public extern IntPtr GetDesktopWindow; [DllImport("user32.dll",EntryPo="GetDC")] public extern IntPtr GetDC(IntPtr hWnd); [DllImport("user32.dll",EntryPo="GetMetrics")] public extern GetMetrics( nIndex); [DllImport("user32.dll",EntryPo="ReleaseDC")] public extern IntPtr ReleaseDC(IntPtr hWnd,IntPtr hDC); public Bitmap GetDesktop { screenX; screenY; IntPtr hBmp; IntPtr hdcScreen = GetDC(GetDesktopWindow); IntPtr hdcCompatible = CreateCompatibleDC(hdcScreen); screenX = GetMetrics(0); screenY = GetMetrics(1); hBmp = CreateCompatibleBitmap(hdcScreen, screenX, screenY); (hBmp!=IntPtr.Zero) { IntPtr hOldBmp = (IntPtr) SelectObject(hdcCompatible, hBmp); BitBlt(hdcCompatible, 0, 0,screenX,screenY, hdcScreen, 0, 0,13369376); SelectObject(hdcCompatible, hOldBmp); DeleteDC(hdcCompatible); ReleaseDC(GetDesktopWindow, hdcScreen); Bitmap bmp = .Drawing.Image.FromHbitmap(hBmp); DeleteObject(hBmp); GC.Collect; bmp; } null; } } 该步骤添加用于 非托管windows GDI API 所需 变量 结构和DllImport语句 8.添加下面代码到在第 2步创建 标签 MouseDown 事件中 private void label1_MouseDown(object sender, .Windows.Forms.MouseEventArgs e){ myBitmap = Win32APICall.GetDesktop ;} 9.添加下面代码到第 2步创建 标签 MouseUp 事件中 private void label1_MouseUp(object sender, .Windows.Forms.MouseEventArgs e){ Color myColor = myBitmap.GetPixel(MousePosition.X,MousePosition.Y); label1.BackColor = myColor;} 10.点击运行 单击并保持鼠标按钮在标签上保持按下状态 在桌面拖动鼠标指针 然后释放鼠标按钮来捕获颜色
相关文章
读者评论
发表评论
|
|