计算屏幕两点的物理尺寸

获取屏幕像素位置

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() + @"寸");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值