【物理分辨率】与【逻辑分辨率】

之前一直没搞清楚 win 10 DPI: 200%,到底是哪个坐标受到影响。

今天算是搞明白了。

与鼠标相关的,比如点击,移动操作使用的相关坐标依据的是【逻辑分辨率】

与屏幕取色、截图,找图相关的坐标,依据的是【物理分辨率】

 

HWND hwnd_desktop = GetDesktopWindow();
HDC hdc = GetWindowDC(hwnd_desktop);

//【物理分辨率】:显示屏的最佳分辨率 ( win 10 上【显示分辨率】中设置的分辨率 )
int w1 = GetDeviceCaps(hdc, DESKTOPHORZRES); 
int h1 = GetDeviceCaps(hdc, DESKTOPVERTRES);

ReleaseDC(hwnd_desktop, hdc); //释放

printf("物理分辨率:%d x %d\n", w1, h1);

 

HWND hwnd_desktop = GetDesktopWindow();
HDC hdc = GetWindowDC(hwnd_desktop);

int w2 = GetDeviceCaps(hdc, HORZRES); //【逻辑分辨率】
int h2 = GetDeviceCaps(hdc, VERTRES);

ReleaseDC(hwnd_desktop, hdc); //释放

printf("逻辑分辨率:%d x %d\n", w2, h2);

 

//【物理分辨率】与【逻辑分辨率】的缩放比例

float dpiScaleX = w1 * 1.0 / w2;
float dpiScaleY = h1 * 1.0 / h2;

printf("scaleX:%f, scaleY:%f\n", dpiScaleX, dpiScaleY);

 

转载于:https://www.cnblogs.com/personnel/p/11478932.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值