最近做的一个软件,内部测试的时候有人把显示器放大了300%,导致界面空间重叠错乱了,之前在双屏幕运行的时候也有出现字体模糊的问题,就一起解决了。

步骤如下:

1. (我所有控件都包含到一个panel里面)将这个form设置缩放为取消缩放(或者像素缩放),并且子控件要么别设置,要么请一定将缩放模式和窗口的缩放模式相同:

this.AutoScaleMode = AutoScaleMode.None;

this.AutoScaleMode = AutoScaleMode.Dpi;

2  设置字的单位是像素,而不是Point:可以解决绝大多数字体模糊的问题

this.TextTitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 32.2F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel, ((byte)(0)));

以下是解释:

1. 不同显示器中,屏幕每一个像素长度和宽度不一样,如果设置了缩放,界面在不同屏幕上会有不同的效果。在winform中,我们设置高度宽度和定位的时候:

this.TextTitle.Location = new System.Drawing.Point(87, 21);
this.TextTitle.Size = new System.Drawing.Size(109, 38);

测试:当我屏幕缩小放大的时候,控件的宽度视觉上不会发生变化。但是当我使用其他分辨率时,控件的高宽会明显变大。字体也是!(所以我觉得控件内部的单位也是像素)

System.Drawing.GraphicsUnit.Pixel

Specifies a device pixel as the unit of measure.(将设备像素指定为度量单位)

System.Drawing.GraphicsUnit.Point

Specifies a printer's point (1/72 inch) as the unit of measure.(指定打印机的点(1/72英寸)作为度量单位)

2 当我在大屏幕上测试完,缩放屏幕显示正常之后拿到笔记本屏幕上查看,出现了界面显示不完全的情况。这个时候我的缩放模式是这个:AutoScaleMode.Dip, 先看一下微软的文档:

The AutoScaleMode property specifies the current automatic scaling mode of this control. Scaling by Font is useful if you want to have a control or form stretch or shrink according to the size of the fonts in the operating system, and should be used when the absolute size of the control or form does not matter. Scaling by Dpi is useful when you want to size a control or form relative to the screen. For example, you may want to use dots per inch (DPI) scaling on a control displaying a chart or other graphic so that it always occupies a certain percentage of the screen.

谷歌翻译如下:

所述AutoScaleMode属性指定此控制的当前自动缩放模式。如果希望控件或窗体根据操作系统中字体的大小拉伸或缩小,则按字体缩放很有用,当控件或窗体的绝对大小无关紧要时,应使用“按比例缩放” 。当您要相对于屏幕调整控件或窗体的大小时,按Dpi缩放很有用。例如,您可能希望在显示图表或其他图形的控件上使用每英寸点数(DPI)缩放,以使其始终占据屏幕的特定百分比。

我理解了一下,就是说:

Dpi

会根据屏幕缩放控件宽和高(不同的分辨率缩放)

Font

根据系统字体缩放控件的宽和高(缩放屏幕会修改字体大小)

None

禁用自动缩放

因为我界面的子panel(自定义用户控件Panel)有的用的缩放是Font,而窗口被我弄成了Dpi,这导致两者比例出现了偏差,窗口变小了,而面板没啥变化,反正两者各自缩放的比例不一样,甚至有些面板没有设置缩放,这就导致了界面有的控件都没显示出来。

关于Dpi缩放,我看到很多说修改App.manifest+App.config,我的项目中没有用这一条,用过后没发现有什么区别就注释了。

所以,控件窗口的缩放模式一定要一致。

缩放模式这一条的后续:

吃饭之前我用笔记本复现了这个现象,然下午我刚刚再次复测的时候怎么都复现不了了,但是为了避免出错,尽量全局一致,避免产生问题。

winform显示器适配(解决字体模糊,界面错乱,多屏适配)相关推荐

  1. android 2k 屏幕 字体模糊,2k显示器怎么会字体模糊

    显示器(display)通常也被称为监视器.显示器是属于电脑的I/O设备,即输入输出设备.它是一种将一定的电子文件通过特定的传输设备显示到屏幕上再反射到人眼的显示工具.下面是学习啦小编带来的关于2k显 ...

  2. 黑苹果hidp显示不清楚_黑苹果开启HiDPI“解决”字体模糊的问题

    2019年3月24日更新:本文除了操作方法以外再无参考价值,新的方法请参考黑苹果开启缩放分辨率HiDPi以及字体模糊的调整方法总结 2019年3月23日更新:发现苹果的标准HiDPi分辨率机制似乎是将 ...

  3. Debian 解决字体模糊问题

    问题 初次试水Debian,装好之后发现字体严重发虚,模糊不清.在查阅了大多数网络上的教程之后,总结了一份快速解决此问题的方法. 这里,我主要参考了金步国先生的文章:Linux字体美化实战(Fontc ...

  4. Mac外接2k屏幕如何开启Hidpi解决字体模糊等问题

    Mac外接显示器字体发虚 mbp外接2k显示器,字体会特别小且有点模糊,选择其他分辨率就会变得特别模糊,搜索一大圈说是要开启hidpi可以解决.于是各种搜教程尝试了一晚上总算OK了,下面把成功解决等方 ...

  5. 黑苹果hidp显示不清楚_macOS开启HiDPI外接2K显示器(解决字体发虚问题)

    1.前言: 入手了一台2K显示器,但是直接连HDMI线显示的效果不忍直视,所以我们需要开启苹果系统的hidpi模式来实现完美显示. 至于为什么要开启hidpi模式?2k显示器的分辨率是2560*144 ...

  6. Unity中字体模糊和图片模糊及解决办法

    最近在项目中遇到UI字体不清楚的情况,看起来很模糊. 在网上也看到了其他人的解决办法: 1.把字体的字号改大一些,然后通过R键,等比例缩放Text,来解决.因为字号较小,单位像素较少,导致渲染的时候模 ...

  7. Intellij Idea 2017.1.5 字体模糊解决方案

    直接上方案,将本链接中的jre64下载替换掉idea自带的jre64. ps:如果自己手头有jdk1.8的jre,也可以自己用jdk1.8的jre替换idea的jre64,但是记得在lib里加上jdk ...

  8. 京东小程序折叠屏适配探索 | 京东云技术团队

    前言 随着近年来手机行业的飞速发展,手机从功能机进入到智能机,手机屏幕占比也随着技术和系统的进步越来越大,特别是Android 10推出以后,折叠屏逐渐成为Android手机发展的趋势. 图 1 An ...

  9. cocos creator屏幕适配fitHeight / fitWidth,手机端竖屏,pc端浏览器适配,pc分辨率全屏适配,血条跟随的适配

    一,使用creator3.3.2 分别实现手机端和浏览器的适配效果如下 打包web-mobile(居然会有这种需求 /流汗!) pc浏览器显示 手机端显示 1.首先在项目中设置分辨率 和默认适配 这里 ...

最新文章

  1. oracle字段大段字符串,ORACLE存储过程,参数目字符串太长
  2. Unity中那些事半功倍的好插件
  3. (转载)聊聊Git原理
  4. 移动端banner css3(@keyframes )实现
  5. Winform中设置ZedGraph的坐标轴的标题和刻度不显示十次幂
  6. C++实现二叉搜索树的查找(附完整源码)
  7. python设计模式(十四):模板方法模式
  8. Cheatsheet: 2010 12.13 ~ 12.23
  9. 小艾k个人发卡网PHP源码
  10. Python_Tips[6] - is 和 == 的区别
  11. 万字长文入门 Redis 命令、事务、锁、订阅、性能测试
  12. 物联网是什么,华为云学院带你走进物联网的前世今生
  13. 基于 HTML5 WebGL 的 3D 网络拓扑图
  14. Bumped! (最短路)
  15. 工作流开源系统--DRAKE
  16. java使用jbarcode生成条形码
  17. 银河系创投徐芳:专注B2B这片热土,燃起产业新势能
  18. ur3手眼标定+realsenseL515
  19. Unusual Minesweeper
  20. 2020度小满java方向笔试题

热门文章

  1. 天池新人赛之新浪微博互动预测
  2. 雷迪9000使用说明_雷迪司UPS监控软件使用说明
  3. Database connections will be migrated
  4. 器件选型-墨水屏(电子纸)介绍
  5. win10系统DPC_WATCHDOG_VIOLATION蓝屏靠谱解决办法
  6. 企业微信根据微信联系人批量自动发送邀请,还可根据手机号批量添加
  7. 使用XUL开发跨平台桌面应用
  8. Steamsets安装教程
  9. android中检测网速,Android 流量与网速监测(悬浮窗) 源码
  10. 征服英语的二十二条军规