像素和毫米之间的一致性

本文关键字:一致性 之间 像素 | 更新日期: 2023-09-27 18:05:19

我在做:

        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左右

请解释一下题目。

像素和毫米之间的一致性

典型的LCD显示器密度为每英寸96像素。这换算成像素尺寸为0.0104167英寸或0.265毫米。

然而,制造技术差异很大,因此像素大小不是固定的。不同的显示器和设备会有不同的音高和密度。所以简短的答案是像素和度量单位之间没有相关性。像素是你(或设备制造商)想要的大小。

引用:

  • http://en.wikipedia.org/wiki/Pixel_density
  • http://en.wikipedia.org/wiki/Pixel
  • http://en.wikipedia.org/wiki/Display_resolution

每个设备将有一个稍微不同的HORZSIZE, HORZRES, VERTSIZE和VERTRES。

调用GetDeviceCaps for HORZSIZE实际上并没有得到显示器的水平大小-它得到的大小如果它是当前分辨率的96 DPI显示器。

96 DPI是默认值,当然-用户可以设置系统DPI,如果他们设置准确,你将得到显示器大小的正确值。然而,几乎没有人这样做-所以您几乎总是会得到假设96 DPI的值。