GetDeviceCaps 函数获取屏幕物理宽度(毫米)不准,求解决。
public static double MillimetersToPixels(double length)
{
System.Windows.Forms.Control ctrl = new System.Windows.Forms.Control();
System.Drawing.Graphics g = System.Drawing.Graphics.FromHwnd(ctrl.Handle);
IntPtr hdc = g.GetHdc();
int width = GetDeviceCaps(hdc, 4);//屏幕物理宽度 毫米
int pixels = GetDeviceCaps(hdc, 8);//屏幕水平分辨率 像素
g.ReleaseHdc(hdc);
return (((double)pixels / (double)width) * (double)length);
}
这是我从网上看到的一段获取当前屏幕(pixel / 毫米)的代码,这样可以通过传进来的毫米获得当前屏幕对应多少像素。
但是我现在遇到的问题是 int width = GetDeviceCaps(hdc, 4) 这里获得的屏幕物理宽度(毫米)在Windows8系统下是准的,但是在Windows7下就明显不准。
哪位告知这是为什么(试验了好几台电脑,windows8下都是正确的,windows7全部不正确)?或者有什么其他办法获得屏幕物理宽度(毫米)