win32获取屏幕缩放比例
|
admin
2025年10月21日 10:28
本文热度 288
|
原理就是获取 实际 设置的分辨率 / 当时显示的分辨率。
设置屏幕缩放后,调用常规的方式获取桌面大小,都是缩放后的尺寸,而非实际设置的尺寸。
这里可以用EnumDisplaySettings函数来获取实际设置的分辨率大小。
#include <iostream>#include<Windows.h>
HMONITOR GetPrimaryMonitor(){ POINT ptZero = { 0, 0 }; return MonitorFromPoint(ptZero, MONITOR_DEFAULTTOPRIMARY);}
float GetMonitorScalingRatio(HMONITOR monitor){ MONITORINFOEX info ={ }; info.cbSize = sizeof(info); GetMonitorInfo(monitor, &info); DEVMODE devmode = {}; devmode.dmSize = sizeof(DEVMODE); EnumDisplaySettings(info.szDevice, ENUM_CURRENT_SETTINGS, &devmode); return static_cast<float>(devmode.dmPelsWidth) / (info.rcMonitor.right - info.rcMonitor.left);}
int main(){ auto h = GetPrimaryMonitor(); float s = GetMonitorScalingRatio(h); std::cout << s << std::endl;}
运行结果 :
运行结果 :
阅读原文:https://mp.weixin.qq.com/s/aba0RgyyN88rVUY-F2ZCRg
该文章在 2025/10/22 9:27:25 编辑过