题
当获得所述DPI为Windows下的屏幕(通过使用:: GetDeviceCaps)将所述水平值总是一样的垂直?例如:
HDC dc = ::GetDC(NULL);
const int xDPI = ::GetDeviceCaps(dc, LOGPIXELSX);
const int yDPI - ::GetDeviceCaps(dc, LOGPIXELSY);
assert(xDPI == yDPI);
::ReleaseDC(NULL, dc);
是这些值过不同?
解决方案
这是可能的因为它是不同的,但通常仅适用于打印机。它可以安全地假定,屏幕将始终具有相同的水平和垂直的DPI。
其他提示
我从未见过它们是不同的,但在此 MSDN网页我看这表明它们可能是一个注释:
int nHorz = dc.GetDeviceCaps(LOGPIXELSX);
int nVert = dc.GetDeviceCaps(LOGPIXELSY);
// almost always the same in both directions, but sometimes not!
我从来没有见过,他们是不同的情况,但事实证明,有两个单独的呼叫它有力地表明,他们有时可能。
它易于为如果监视器被设置为使用一个屏幕分辨率是不一样的物理屏幕比例,如4他们是不同的:像1600×1200 3分辨率的16:9的显示
不隶属于 StackOverflow