程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#動態獲取鼠標位置的顏色

C#動態獲取鼠標位置的顏色

編輯:C#入門知識

在上一篇,C#_動態獲取鼠標坐標,中已經很輕松的獲取到了鼠標移動時的動態坐標了。那麼,像屏幕取色工具那樣,該如何獲取該坐標,該點的顏色值呢,這裡還是利用原生態的API方法來實現。

API聲明:

/// <summary>
/// 獲取指定窗口的設備場景
/// </summary>
/// <param name="hwnd">將獲取其設備場景的窗口的句柄。若為0,則要獲取整個屏幕的DC</param>
/// <returns>指定窗口的設備場景句柄,出錯則為0</returns>
[DllImport("user32.dll")]
public static extern IntPtr GetDC(IntPtr hwnd);

/// <summary>
/// 釋放由調用GetDC函數獲取的指定設備場景
/// </summary>
/// <param name="hwnd">要釋放的設備場景相關的窗口句柄</param>
/// <param name="hdc">要釋放的設備場景句柄</param>
/// <returns>執行成功為1,否則為0</returns>
[DllImport("user32.dll")]
public static extern Int32 ReleaseDC(IntPtr hwnd, IntPtr hdc);

/// <summary>
/// 在指定的設備場景中取得一個像素的RGB值
/// </summary>
/// <param name="hdc">一個設備場景的句柄</param>
/// <param name="nXPos">邏輯坐標中要檢查的橫坐標</param>
/// <param name="nYPos">邏輯坐標中要檢查的縱坐標</param>
/// <returns>指定點的顏色</returns>
[DllImport("gdi32.dll")]
public static extern uint GetPixel(IntPtr hdc, int nXPos, int nYPos);

 

使用:

public Color GetColor(int x, int y)
{
   IntPtr hdc = GetDC(IntPtr.Zero);
   uint pixel = GetPixel(hdc, x, y);
   ReleaseDC(IntPtr.Zero, hdc);
   Color color = Color.FromArgb((int)(pixel & 0x000000FF), (int)(pixel & 0x0000FF00) >> 8, (int)(pixel & 0x00FF0000) >> 16);
   return color;
}

 

這裡的參數x,y,就是我們獲取到的鼠標坐標。傳送門:C#_動態獲取鼠標坐標

    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved