高分屏电脑开发的winforms软件如何确保在低分屏显示正常

news/2024/7/21 7:52:45 标签: 电脑, windows, microsoft, powerpoint

高分屏电脑通常我们会设置缩放比例, 比如我的开发电脑为4K屏, 设置的缩放比例为150%, 即每英寸显示点数DPI为144个, 这样Windows显示效果最好; 对于低分屏, 通常的缩放比例为100%, 即每英寸显示点DPI为96个.

我们在高分屏上设计winforms软件窗体布局, 不做特意处理, 将来软件运行在低分屏电脑上, 窗体布局和文字显示很可能会错位.
这里介绍两种做法:

  1. 将软件做成 dpiAware, 这个做法需要考虑非常多的情况, 窗体大小/布局/控件大小/字体大小, 做的完美开发成本很高. 优点是, 系统如果部署在比开发机更高DPI的机器上, 显示效果依然很好.
  2. 软件不启用 dpiAware. VS的窗体设计器不不启用缩放模式, 同时软件也不启用dpiAware, 将来在低分屏上运行, 窗体/控件尺寸和字体大小都和设计时一样.

如果要采用第一种做法, 可以按照本文的参考文档进行实践, 我这里使用的就是第2种做法, 下面是要点:

Visual studio 禁用自动缩放功能

启动命令行为 devenv.exe /noscale , 这样可保证UI 设计的样子没有缩放效果, 和将来在低分屏运行的尺寸一样. 缺点是VS中的字体有些模糊.
在这种模式下, Visual Studio 总是提示我们目前处于禁用缩放模式, 是否要开启的通知。 可以通过下面的设置关闭通知提示:
选择“工具”>“选项”,打开“选项”对话框 。在“选项”对话框中,选择“Windows 窗体设计器”>“常规”,然后将“DPI 缩放通知”设置为“False”。

项目增加 app.manifest 文件

将 dpiAware 设置为false, 禁用 dpiAware

<application xmlns="urn:schemas-microsoft-com:asm.v3">
		<windowsSettings>
			<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiAware>
			<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
		</windowsSettings>
	</application>

编辑 app.cnfig 文件

将 EnableWindowsFormsHighDpiAutoResizing 设置为false, 否则即使在禁用 dpiAware 情况下, 窗体的位置也会变化.

<!-- DpiAwareness 设置为效果更好的 PerMonitorV2 模式  -->
	<System.Windows.Forms.ApplicationConfigurationSection>
		<add key="DpiAwareness" value="PerMonitorV2" />
	</System.Windows.Forms.ApplicationConfigurationSection>
	<appSettings>
		<add key="EnableWindowsFormsHighDpiAutoResizing" value="false" />
	</appSettings>

更多 dpiAware 资料

  1. telerik 厂商的说明 https://www.telerik.com/blogs/winforms-scaling-at-large-dpi-settings-is-it-even-possible-
  2. devexpress 厂商的说明 <>https://docs.devexpress.com/WindowsForms/116666/common-features/high-dpi-support>
  3. SOUI 组件的说明 https://www.cnblogs.com/setoutsoft/p/16425917.html

http://www.niftyadmin.cn/n/279169.html

相关文章

作为一个大学生你应该知道的事情

作为一个大学生你应该知道的事情 大学生毕业去向 今天&#xff0c;我们不写技术&#xff0c;来谈一谈大学生的毕业现状&#xff1a; 以下内容为本人的一些观点和看法&#xff0c;仅限于沟通交流。 大学生毕业去向 大学生的毕业去向大致可以分为&#xff1a;就业、自由职业、慢…

ChatGPT技术原理 第十二章:GPT模型优化

目录 12.1 模型压缩 12.2 蒸馏技术 12.3 动态路由技术 12.1 模型压缩 ChatGPT模型在实际应用中往往需要大量的计算资源和存储空间,对于一些资源受限的设备(如移动端设备

Java反射(原理剖析与使用)

一、反射机制是什么 1、Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息&#xff0c;从而操作类或对象的属性和方法。本质是JVM得到class对象之后&#xff0c;再通过class对象进行反编译&#xff0c;从而获取对象的各种信息。 2、Java属于先编译再运行的语言&a…

行人重识别数据集Person Re-Identification Datasets(全)

DatasetRelease time# identities# cameras# imagesLabel methodCrop sizeMulti-shotTracking sequencesFull frames availabilityVIPeR200763221264Hand128X48ETH1,2,3200785, 35, 2818580HandVary✔✔✔QMUL iLIDS20091192476HandVary✔GRID2009102581275HandVaryCAVIAR4ReID…

【unity项目实战】3DRPG游戏开发07——其他详细的设计

敌人动画设计 新增图层动画,把权重设为1 在新图层默认新建一个空状态Base State,实现怪物默认动画播放Base State,因为Base State是空动画,所以默认会找上一个层的动画,这样就实现了两个图层动画的切换,也可以选择修改权重的方式实现 敌人随机巡逻 显示敌人巡逻的范…

有哪些好的学习方法?学霸们自己在用,却不愿意透露的

临近期末,很多家长都在跟我咨询,怎么才能提升孩子的学习效率? 原因就是,每天看着自己的孩子学习到深夜,但不少内容还是记不住, 学习和复习的效果非常的不理想。 今天,给大家分享的方法,是我自己一直也都在用的方法,效果非常的棒。 学长Ron,江苏某省重点高中毕业,高…

python毕业设计之django+vue.js幼儿园网站系统

开发语言&#xff1a;Python 框架&#xff1a;django Python版本&#xff1a;python3.7.7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;PyCharm 采用了Windows10操作系统平台&#xff0c;使用HTMLCSSJS前端模板django作为后台监控&#xff0…

【数据结构】超详细之顺序表(利用C语言实现)

文章目录 前言一、顺序表是什么&#xff1f;二、顺序表的实现步骤 1.顺序表的初始化以及开辟空间2.实现顺序表的头插、尾插以及打印3.实现顺序表的头删、尾删以及打印4.实现顺序表的查找5.实现顺序表指定位置插入6.实现顺序表指定位置删除7.释放内存总结 前言 数据结构是一个程…