像素与mm之间的一致性

时间:2011-08-12 18:13:24

标签: c# screen wysiwyg gdi dimension

我在做:

        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

请解释这个问题。

3 个答案:

答案 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的情况下取回值。