0

我正在做:

        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

请解释一下题目。

4

3 回答 3

2

典型的 LCD 监视器具有 96 像素/英寸的密度。这转换为 0.0104167 英寸或 0.265 毫米的像素大小。

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

参考:

于 2011-08-12T18:30:29.743 回答
0

调用GetDeviceCapsHORZSIZE 实际上并没有得到显示器的水平尺寸——它得到的当前分辨率下 96 DPI 显示器的尺寸。

当然,96 DPI 是默认值 - 用户可以设置系统 DPI,如果设置准确,您将获得显示器尺寸的正确值。但是,几乎没有人这样做 - 所以假设 96 DPI,您几乎总是会返回值。

于 2011-08-12T18:35:29.600 回答
0

每个设备的 HORZSIZE、HORZRES、VERTSIZE 和 VERTRES 都会略有不同。

于 2011-08-12T18:29:16.683 回答