Pregunta

Al obtener el DPI para la pantalla en Windows (usando :: GetDeviceCaps) ¿el valor horizontal siempre será el mismo que el vertical? Por ejemplo:

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

¿Estos valores son siempre diferentes?

¿Fue útil?

Solución

Es posible que sea diferente, pero eso generalmente solo se aplica a las impresoras. Se puede suponer con seguridad que la pantalla siempre tendrá DPI horizontales y verticales idénticos.

Otros consejos

Nunca los vi diferentes, pero en esta página de MSDN veo un comentario que sugiere que podrían ser:

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

   // almost always the same in both directions, but sometimes not!

Nunca he visto un caso en el que sean diferentes, pero el hecho de que haya dos llamadas por separado sugiere que podrían serlo algunas veces.

Es fácil que sean diferentes si el monitor está configurado para usar una relación de resolución de pantalla que no es la misma que la relación de pantalla física, como una resolución de 4: 3 como 1600x1200 en una pantalla de 16: 9.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top