win 10 dpi:150% 与 win 7 dpi:150% 的不同之处
由于 win 7 和 win 10 的 dpi 处理方式不同,导致我们写的客户端程序在 win 7 上运行正常,在 win 10(dpi:150%)上运行不正常了。
具体的描述,可参考:解决win10系统中截图异常放大的问题 (https://blog.csdn.net/chenlycly/article/details/53139564)
win 10 通过 DWM 虚拟化支持的 高DPI方式,这种方式的高DPI支持是通过DWM的缩放实现的, 具体过程是这样的, 比如我们当前系统的DPI是200%, 我们程序运行时,系统会告诉你当前DPI仍然是96(100%), 所以我们程序会仍然按照100%的方式进行绘画, 但是但是系统给我们的坐标是根据DPI缩小过后的(也就是我们对窗口调用GetWindowRect或是通过GetSystemMetrics(SM_CXSCREEN)得到的大小会比实际大小减半) , 当我们画完之后, DWM再对整个窗口进行200% 放大后画到屏幕上, 这样看起来我们的程序就自动支持高DPI了。
获取屏幕宽度和高度的代码:
int m_xScreen = GetSystemMetrics( SM_CXSCREEN );
int m_yScreen = GetSystemMetrics( SM_CYSCREEN );
win 10 当显示比例设置为100%时屏幕的宽度和高度就是当前系统设置的分辨率,当显示比例大于100%时,比如为N%,DWM虚拟化会将GetWindowRect等获取的像素尺寸缩小到分辨率的1/(N%),所以结合获取的桌面图片区域的比例情况,是不是可以考虑使用当前系统设置的分辨率宽度和高度来获取整张桌面图片,因为分辨率宽度和高度大于当前桌面的像素宽度和高度,所以在向内存中拷贝图片时,需要选用StretchBlt,将图片进行缩放,缩放到桌面的像素高度和宽度。经过试验,这样做确实是可行的,具体的做法是,先调用EnumDisplaySettings获取当前系统设置的分辨率,然后判断屏幕宽度是否小于分辨率,若小于就要换用StretchBlt进行缩放处理。
平时写的程序在 win 7不同的 dpi 下,都能正常运行,但在 win 10 不同的 dpi 上,表现就不同了。
因此,针对 win 10 系统, 判断是否在 dpi > 100% 环境下:
int m_xScreen = GetSystemMetrics(SM_CXSCREEN); if (在 win 系统下)
{
DEVMODE curDevMode; memset(&curDevMode, , sizeof(curDevMode)); curDevMode.dmSize = sizeof(DEVMODE); BOOL bEnumRet = EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &curDevMode); if (bEnumRet && m_xScreen < curDevMode.dmPelsWidth) {
//这里就是在 win 10 的 高 dpi 环境下。 dpi > 100%
}
}
另外,还有一种方式,通过【属性】设置,来解决:
解决win10系统下QQ截图及QQ五笔截图屏幕自动放大:https://blog.csdn.net/benjiuben/article/details/81951866
WIN10系统 截图或者某些程序时屏幕会自动放大怎么办:https://blog.csdn.net/weixin_33842304/article/details/85991562
win 10 dpi:150% 与 win 7 dpi:150% 的不同之处的更多相关文章
- Win 10 、Win 8 系统默认字体如何修改为宋体
Win 10 字体改为宋体方法:新建一个文本文档txt,将如下代码复制进去:Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWA ...
- Win 10开门人类智慧的世界领先
3月18日,从微软硬件project大会(WinHEC 2015)上传来好消息:今年夏天,Win 10将要正式公布.Win 10公布,有何新意? 微软新领导人纳德拉(Nadella)主张:运计算,大数 ...
- win 10 dpi 缩放
win 10 dpi dwm 效果,影响最大的函数有 参考资料:https://blog.csdn.net/chenlycly/article/details/53142098 GetSystemMe ...
- 【Win 10应用开发】Adaptive磁贴模板的XML文档结构
在若干天之前,老周给大家讲了Adaptive Toast通知的XML模板,所以相应地,今天老周给大家介绍一下Adaptive磁贴的新XML模板. 同样道理,你依旧可以使用8.1时候的磁贴模板,在win ...
- Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构
分享两篇Win 10应用开发的XML文档结构:Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构. Win 10 开发中Adapt ...
- 【Win 10 应用开发】启动远程设备上的应用
这个功能必须在“红石-1”(build 14393)以上的系统版中才能使用,运行在一台设备上的应用,可以通过URI来启动另一台设备上的应用.激活远程应用需要以下前提: 系统必须是build 14393 ...
- 【Win 10 应用开发】导入.pfx证书
这个功能其实并不常用,一般开发较少涉及到证书,不过,简单了解一下还是有必要的. 先来说说制作测试证书的方法,这里老周讲两种方法,可以生成用于测试的.pfx文件. 产生证书,大家都知道有个makecer ...
- 【Win 10应用开发】延迟共享
延迟共享是啥呢,这么说吧,就是在应用程序打开共享面板选择共享目标时,不会设置要共享的数据,而是等到共享目标请求数据时,才会发送数据,而且,延迟操作可以在后台进行. 这样说似乎过于抽象,最好的诠释方法, ...
- 【Win 10 应用开发】RTM版的UAP项目解剖
Windows 10 发布后,其实SDK也偷偷地在VS的自定义安装列表中出现了,今天开发人员中心也更新了下载.正式版的SDK在API结构上和以前预览的时候是一样的,只是版本变成10240罢了,所以大家 ...
随机推荐
- Vue.js实现注册功能
编写html,通过vue-resource.js库向后台提交数据 <!DOCTYPE html> <html lang="en"> <head> ...
- javascript排序算法-快速排序
快速排序 概念: (1) 首先,从数组中选择中间一项作为主元. (2) 创建两个指针,左边一个指向数组第一个项,右边一个指向数组最后一个项.移动左指针直到我们找到一个比主元大的元素,接着,移动右指针直 ...
- 自定义修改Anaconda Jupyterlab Home目录
自定义修改Anaconda Jupyterlab Home目录 最近在使用Anaconda学习数据分析和机器学习,会使用到Jupyter,但是他默认目录是用户的目录,我并没有习惯将项目和资料放在C盘, ...
- solr8.0 从数据库导入数据(三)
第一步:导入相关包: 在创建的核心目录下新建lib文件夹(如果有,无需建立),从Solr源码包的dist文件夹中导入两个solr-dataimporthandler包,以及一个mysql驱动包. 第二 ...
- 基于geotools的(两个)SHP要素变化提取方法预研
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1. 背景 我们用遥感的手段进行卫星特征提取.多幅影像间的特征变化提取的 ...
- Android com.daimajia.slider.library.SliderLayout 去掉底部半透明标题背景
com.daimajia.slider.library.SliderLayout 是挺好用的轮播图控件,但是底部灰色背景有时候用不到,所以得去掉. sliderLayout.setCustomAnim ...
- JVM内存结构,运行机制
三月十号,白天出去有事情出去了一天,晚上刚到食堂就接到阿里电话, 紧张到不行,很多基础的问题都不知道从哪里说了orz: 其中关于JVM内存结构,运行机制,自己笔记里面有总结的,可当天还是一下子说不出来 ...
- 使用 prismjs 在网页中高亮显示代码
最近在总结这一年来制作的网页模块,网站风格统一的情况下,网站页面结构不会改变,因此想记录一部分网站中统一的结构,方便日后维护. 用到的相关技术: vue, element-ui, prismjs, v ...
- MongoDB自学(4)
超过存储上限或记录条数删除最早的记录:db.createCollection("集合名",{capped:true,size:1024,max:100})注解:指定集合名的最大记录 ...
- HTML语义化的理解
语义化的主要目的:用正确的标签做正确的事情. 语义化验证方法:css裸奔--去掉css样式,然后看页面是否还具有很好的可读性. 语义化意义 / 优点: 1.让页面的内容结构化 2.利于浏览器解析和SE ...