专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »DotNet » 鼠标颜色:C#获取鼠标所指像素的颜色 »正文

鼠标颜色: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.点击运行单击并保持鼠标按钮在标签上保持按下状态在桌面拖动鼠标指针然后释放鼠标按钮来捕获颜色

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: