Windows Dpi 缩放
MSDN:
1. 设置当前进程或者线程对dpi设置的感知
SetProcessDpiAwarenessContext function (winuser.h) - Win32 apps | Microsoft DocsSets the current process to a specified dots per inch (dpi) awareness context. The DPI awareness contexts are from the DPI_AWARENESS_CONTEXT value.https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setprocessdpiawarenesscontextSetThreadDpiAwarenessContext function (winuser.h) - Win32 apps | Microsoft Docshttps://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-setthreaddpiawarenesscontext2. 获取当前系统dpiGetDpiForSystem function (winuser.h) - Win32 apps | Microsoft DocsReturns the system DPI.https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdpiforsystem3. 接收dpi变更通知
WM_DPICHANGED WinUser.h (的消息) - Win32 apps | Microsoft Docshttps://docs.microsoft.com/zh-cn/windows/win32/hidpi/wm-dpichanged
说明:
1. 设置进程或者线程dpi不同点在于,dpi对ui元素生效的范围不同
2.
The return value will be dependent based upon the calling context. If the current thread has a DPI_AWARENESS value of DPI_AWARENESS_UNAWARE, the return value will be 96. That is because the current context always assumes a DPI of 96. For any other DPI_AWARENESS value, the return value will be the actual system DPI.
You should not cache the system DPI, but should use GetDpiForSystem whenever you need the system DPI value.
3. 要接收系统dpi变化消息,需要设置dpi感知为:
DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE 或者DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2
复杂的用法可以在接收到通知之后重新用SetWindowsPos设置UI中元素的大小,简单的方式就是在收到dpi改变的消息后询问用户是否重启应用以适配新的dpi设置
附:
DPI 几种感知模式的不同:
另外QT 5.6 之后就已经支持对DPI缩放的支持, 在 QApplication 构造之前设置
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
就能自动适应不同 dpi 的调整,Qt 6.0 之后已经不提供开关,默认自适应生效。
Windows Dpi 缩放相关推荐
- Windows:缩放设置及DPI缩放详解
摘要:再次遇到软件在显示器上不能显示完全的情况,同样的分辨率同样的软件,一台显示正常一台显示不全.造成这个原因的是在相同分辨率下其设置不同 缩放 比例问题导致,这里记录一下windwos系统如何设置缩 ...
- Windows 10“创作者更新”改进了高DPI缩放支持
即将于下周正式发布的 Windows 10"创作者更新"将带来诸多激动人心的新功能,但它其实还包含了许多底层的小改进,比如更好地支持高 DPI 显示屏.在 Windows 10&q ...
- win10禁止dpi缩放在哪_Win10最新DPI缩放技术怎么设置?
Win10正式版采用了全新的DPI机制,能够让屏幕显示更清晰.这是因为Win10使用了DPI缩放技术,对字体进行全新排版,从而提高Win10分辨率.本文就来介绍一下Win10最新DPI缩放技术怎么设置 ...
- win10下anaconda+spyder+keras 下载与设置大全(汉化、环境变量设置、DPI缩放等)
目录 一.anaconda的下载与安装 1.环境变量的设置 二.spyder的设置 1.spyder的汉化 2.设置spyder的布局.DPI缩放与弹出窗口显示图片 三.keras+TensorFlo ...
- windows - DPI (简单明了)
文章目录 DPI 概念 DPI 的由来和定义 字标准 (磅) 显示的问题(物理世界对应) 逻辑单位 像素点 和 字体的关系 设置DPI DPI 感知应用程序 DWM 缩放 DPI 感知应用程序 GDI ...
- html高dpi缩放,浏览器在DPI缩放时变化问题
在高分辨笔记本电脑上,如果使用了"放大".那么原来在笔记本上很小的字和图就看起来大很多了.看起来舒服. 这个笔记本电脑是 1920 1080 装W10,系统推荐说125%佳.于是设 ...
- 1个 pywinauto issue 和 Windows DPI 设置
1.pywinauto的issue 使用pywinauto时TreeView组件的item的click()方法点击坐标有时会出错,原因和windowsDPI设置有关. (参考issue37, issu ...
- Win10强制程序高DPI缩放设置
起因 工作原因,需要在win10上安装数个古老vc版本(vc6,vc2008,vc2010),但是显示器是2K的,DPI缩放有问题 尝试 VC6比较好解决:右键,属性,兼容性,更改高DPI设置,勾选替 ...
- win10禁止dpi缩放在哪_如何在Win10中调整dpi缩放? Win10全局启用dpi缩放设置方法!...
如何在Win10中调整dpi缩放?在Windows 10 Creators Update(版本1703)的操作中win10更改高dpi设置,我们可以将DPI扩大到200%. 关于如何在win10系统中 ...
最新文章
- java项目打成jar和war_maven打包web项目时同时打包为war和jar文件的方法
- 设计师要懂布局(一)
- linux vim命令跳到67行,Linux学习之Vim/Vi使用(十三)
- cad转shp格式带属性_Excel、Word、PPT、CAD办公格式怎么转?方法汇总,可批量
- 精通Android自定义View(十六)invalidate方法和requestLayout方法
- 广东电信 5.31 因「运维误操作」导致断网:流量突降 1.3 TB
- 苹果软解ID软件(X.PASSWORD-XIMEI 苹果id锁)--上帝左手汉化组(内附即时更新)
- 【Zotero同步管理】【Zotero 6.0 + 坚果云 + iPad官方zotero APP】最新版教程
- origin8.1中文乱码设置方法
- Jenkins构建项目
- 怎么下载老版本android,剪映旧版下载
- 指针 转 智能指针_智能指针-它们真的那么聪明吗?
- QT官网最新的往期版本下载链接
- Adobe CC 2019
- 计算机制作表格英语怎么说,表格用英语怎么说
- canvas 动态镂空
- “北京大妈”名下拥上千车牌被查
- vs2008下搭建qt开发环境
- 计算机应用类专业综合模拟试卷一,计算机应用专业综合模拟试卷一.docx
- Python小游戏:外星人入侵!!!终于完成了!!!