å¯ä»¥å©ç¨åçæçAPIæ¹æ³æ¥å®ç°ï¼éè¿GetDCè·åå±å¹DCï¼ç¶åéè¿GetPixelè·åç¹çé¢è²ã代ç å¦ä¸ï¼
/// <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;
}