获取屏幕像素位置
var x = Curosr.Position.X.ToString();
var y = Curosr.Position.Y.ToString();
//分辨率和屏幕尺寸比例:sx,sy 很容易得到
distance= Math.Sqrt((x/sx*x/sx)+(y/sy*y*sy))
补充:获取屏幕尺寸的方法
public virtual List<string> GetMonitorPnpDeviceId() {
List<string> rt = new List<string>();
using (ManagementClass mc = new anagementClass("Win32_DesktopMonitor")) {
using (ManagementObjectCollection moc = mc.GetInstances()) {
foreach (var o in moc) {
var each = (ManagementObject) o;
object obj = each.Properties["PNPDeviceID"].Value;
if (obj == null)
continue;
rt.Add(each.Properties["PNPDeviceID"].Value.ToString());
}
}
}
return rt;
}
public virtual byte[] GetMonitorEdid(string monitorPnpDevId) {
return (byte[])Registry.GetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\" + monitorPnpDevId + @"\Device Parameters", "EDID", new byte[]{ });
}
//获取显示器物理尺寸(cm)
public virtual SizeF GetMonitorPhysicalSize(string monitorPnpDevId) {
byte[] edid = GetMonitorEdid(monitorPnpDevId);
if (edid.Length < 23)
return SizeF.Empty;
return new SizeF(edid[21], edid[22]);
}
//通过屏显示器理尺寸转换为显示器大小(inch)
public static float MonitorScaler(SizeF moniPhySize) {
double mDSize = Math.Sqrt(Math.Pow(moniPhySize.Width, 2) + Math.Pow(moniPhySize.Height, 2)) / 2.54d;
return (float)Math.Round(mDSize, 1);
}
调用方法:
SystemInfo sysInfo = new SystemInfo();
string id = sysInfo.GetMonitorPnpDeviceId()[0];
SizeF size = sysInfo.GetMonitorPhysicalSize(id);
MessageBox.Show(SystemInfo.MonitorScaler(size).ToString() + @"寸");