我在做:
PhysicalParameters()
{
IntPtr DeskTopHWND = GetDesktopWindow();
IntPtr HDC = GetDC(DeskTopHWND);
int mmX = GetDeviceCaps(HDC, HORZSIZE);
int mmY = GetDeviceCaps(HDC, VERTSIZE);
int pxX = GetDeviceCaps(HDC, HORZRES);
int pxY = GetDeviceCaps(HDC, VERTRES);
ReleaseDC(DeskTopHWND, HDC);
double CoeffPIX_MM_X = 1.0 * mmX / pxX;
double CoeffPIX_MM_Y = 1.0 * mmY / pxY;
}
两者的结果是0.25
但是我所看到的(MS Word'WysiWyg)它应该是大约0.27
请解释这个问题。
答案 0 :(得分:2)
典型的LCD显示器的密度为96像素/英寸。这意味着像素尺寸为0.0104167英寸或0.265毫米。
然而,制造技术差异很大,因此像素尺寸不固定。不同的监视器和设备将具有不同的间距和密度。所以简短的答案是像素和度量单位之间没有相关性。像素是您(或设备制造商)想要的大小。
参考文献:
答案 1 :(得分:0)
每个设备的HORZSIZE,HORZRES,VERTSIZE和VERTRES都会略有不同。
答案 2 :(得分:0)
为HORZSIZE调用GetDeviceCaps
实际上并没有获得显示器的水平尺寸 - 如果它是当前分辨率下的96 DPI显示器,它将获得的大小。 / p>
当然,96 DPI是默认设置 - 用户可以设置系统DPI,如果他们准确设置,您将获得适合显示器大小的正确值。尽管如此,几乎没有人这样做 - 所以你几乎总会在假设96 DPI的情况下取回值。