屏幕像素分辨率,单位mm

Nav*_*een 5 c c++ winapi mfc

是否可以使用Win32 API获得mm的屏幕像素分辨率?我有一个应用程序显示0.34722222222222222作为我的1280x1024显示器上96dpi的值.但我无法弄清楚它是如何获得这个价值的.任何线索都会有所帮助.如果需要,我也可以使用MFC.

编辑 很抱歉混乱,我所说的软件没有使用当前的屏幕分辨率.它是从一些配置文件中读取它.

Ele*_*tal 8

获取显示器的设备上限可以为您提供像素和mm的尺寸:

HDC screen = GetDC(NULL);
int hSize=GetDeviceCaps(screen,HORZSIZE);
int hRes=GetDeviceCaps(screen,HORZRES);
float PixelsPerMM=(float)hRes/hSize;   // pixels per millimeter
float PixelsPerInch=PixelsPerMM*25.4; //dpi
Run Code Online (Sandbox Code Playgroud)

  • 但那些是合乎逻辑的英寸不是吗? (5认同)

Fre*_*abe 2

使用该GetDC函数获取显示器的句柄,然后调用该GetDeviceCaps函数以获取显示器的尺寸(以毫米为单位)。例如:

HDC monitor = GetDC( NULL );
int horizSize = GetDeviceCaps( monitor, HORZSIZE );
int vertSize = GetDeviceCaps( monitor, VERTSIZE );
Run Code Online (Sandbox Code Playgroud)