7

Windowsで画面のDPIを取得する場合(:: GetDeviceCapsを使用)、水平方向の値は常に垂直方向の値と同じになりますか?例えば:

HDC dc = ::GetDC(NULL);
const int xDPI = ::GetDeviceCaps(dc, LOGPIXELSX);
const int yDPI - ::GetDeviceCaps(dc, LOGPIXELSY);
assert(xDPI == yDPI);
::ReleaseDC(NULL, dc);

これらの値はこれまでに異なりますか?

4

4 に答える 4

7

異なる可能性がありますが、それは通常、プリンターにのみ適用されます。画面の水平方向と垂直方向の DPI は常に同じであると想定できます。

于 2008-11-24T17:47:05.610 に答える
1

私はそれらが異なるのを見たことはありませんが、このMSDN ページで、それらが異なる可能性があることを示唆するコメントを目にします:

   int nHorz = dc.GetDeviceCaps(LOGPIXELSX);
   int nVert = dc.GetDeviceCaps(LOGPIXELSY);

   // almost always the same in both directions, but sometimes not!
于 2008-11-24T16:44:58.933 に答える
0

それらが異なるケースを見たことはありませんが、2 つの別々の呼び出しがあるという事実は、それらが異なる場合があることを強く示唆しています。

于 2008-11-24T17:05:42.293 に答える