using System;
using System.Windows;
namespace MyApp
{
public static class PrimaryScreen
{
#region Win32 API
[DllImport("user32.dll")]
public static extern IntPtr GetDC(IntPtr ptr);
[DllImport("gdi32.dll")]
public static extern int GetDeviceCaps(IntPtr ptr, int nIndex);
[DllImport("user32.dll")]
public static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDc);
[DllImport("user32.dll")]
public static extern bool GetCursorPos(out System.Drawing.Point pt);
[DllImport("gdi32.dll")]
public static extern uint GetPixel(IntPtr hDc, int nXpos, int nYpos);
#endregion
const int HORZRES = 8;
const int VERTRES = 10;
const int LOGPIXELSX = 88;
const int LOGPIXELSY = 90;
const int DESKTOPVERTRES = 117;
const int DESKTOPHORZRES = 118;
public static System.Drawing.Color GetPixColor()
{
System.Drawing.Point pt = new System.Drawing.Point(0,0);
IntPtr hdc = GetDC(IntPtr.Zero);
GetCursorPos(out pt);
float scaleX = (float)GetDeviceCaps(hdc, DESKTOPHORZRES) /
(float)GetDeviceCaps(hdc, HORZRES);
float scaleY = (float)GetDeviceCaps(hdc, DESKTOPVERTRES) /
(float)GetDeviceCaps(hdc, VERTRES);
uint pixel = GetPixel(hdc, (int)(pt.X * scaleX), (int)(pt.Y * scaleY));
System.Drawing.Color color = System.Drawing.Color.FromArgb(
(int)(pixel & 0x000000FF),
(int)(pixel & 0x0000FF00) >> 8,
(int)(pixel & 0x00FF0000) >> 16);
return color;
}
}
}
c# - 获取屏幕分辨率、系统设置的缩放比例、rgb值
最新推荐文章于 2024-07-27 13:33:32 发布