解决VS在高DPI下设计出的Winform程序界面变形问题
在目前高分屏流行的情况下,windows缩放与布局仍然设置为100%就显得太小(特别是笔记本),通常会调整为125%或150%,
VS在缩放与布局设置为非100%的时候,就会自动启动DPI感知模式,以防止VS界面模糊。
但也会导致一个问题
就是在高DPI下(非100%缩放与布局)设计的winform程序
当拿到不同的缩放条件下运行时就会遇到界面变形或不一致的问题,
我们这里提供了一个解决方案来防止高DPI下设计出的winform程序界面变形(但是不能解决winform程序在高DPI下可能变糊)
即禁用VS的高DPI感知模式,让VS运行在标准DPI环境下,这样设计出来的程序无论在何种DPI环境下都不会产生变形(但可能模糊,我们这里主要解决变形问题)
原因:
With the extreme differences in display DPIs, especially in modern 2-in-1 devices, this can still happen with the most current versions of the .NET Framework and Visual Studio. To address this in a team using different DPI displays, make sure Visual Studio always starts in a non-DPI-aware mode, so the Windows Forms designer always bases the layout calculation on 96 DPI. To this end, simply set the following registry key to disable Visual Studio's HighDPI awareness
由于显示DPI的极端差异,尤其是在现代2合1设备中,这种情况在最新版本的.NET Framework和Visual Studio中仍可能发生。 要在使用不同DPI显示的团队中解决此问题,请确保Visual Studio始终以非DPI感知模式启动,因此Windows窗体设计器始终将布局计算的基础设置为96 DPI。 为此,只需设置以下注册表项即可禁用Visual Studio的HighDPI意识:
解决方法:
1、手动在注册表中添加项
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\devenv.exe]
"dpiAwareness"=dword:00000000
2、Bat一键处理(新建文本文件.txt 改后缀为 bat,将下面代码粘贴到文本文件里保存,双击执行即可)
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\devenv.exe" /v "dpiAwareness" /t REG_DWORD /d "0"
解决VS在高DPI下设计出的Winform程序界面变形问题的更多相关文章
- 解决高分屏/高DPI下GNOME3/Linux字体和按钮太小的问题
更改系统设置就好了. 我的设备是Surface Pro,12英寸,分辨率2736x1824,在虚拟机里安装CentOS 7后字特别小,标题栏的最小化/最大化/关闭按钮也很小,眼睛受不了的. 更改两个设 ...
- 高DPI下界面错乱的解决方法和原理
来源: http://bbs.csdn.net/topics/370177760 我在win32 + c写的界面中解决办法,就是把字体的字号给固定了,这样做的结果就是,不管dpi是否有改变,界面中控件 ...
- 如何在高并发环境下设计出无锁的数据库操作(Java版本)
一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...
- WPF,解决Listbox,按住ListboxItem向下拖出Listbox,横向滚动条跑到最后。
类似这种样式的控件,.,在横向滚动条隐藏的情况下有这样的问题.(横向滚动条显示的时候也会,,目前不知道怎么解决.) 因为这个控件偏移是利用ListBox的ItemsPanelTemplate模版里的S ...
- cefsharp 在高DPI下闪烁的问题
今天有客户朋友说程序在他的surface下界面很闪烁,搜索了相关的资料,初步判定是DPI引起的问题,但也有可能是cefsharp 51版本在WIN10上面没有禁用GPU加速,苦于没有环境测试,所以抱着 ...
- cef3:禁止win10高dpi下cef对内部网页进行缩放
1.使用命令行参数 //禁止cef进行dpi缩放 command_line->AppendSwitchWithValue("--force-device-scale-factor&qu ...
- 手把手教会 VS2022 设计 Winform 高DPI兼容程序 (net461 net6.0 双出)
本文主要解决两个问题 C# Winform高DPI字体模糊. 高DPI下(缩放>100%), UI设计器一直提示缩放到100%, 如果不重启到100%,设计的控件会乱飞. 建立测试程序 新建.N ...
- Windows高DPI系列控件(一) - 饼图
目录 一.醉一醉 二.效果展示 三.高DPI适配 1.高DPI框架运作 2.适配高DPI 3.适配饼图 四.相关文章 原文链接:Windos高DPI系列控件(一) - 饼图 一.醉一醉 眨眼功夫,20 ...
- (原创)高DPI适配经验系列:(一)缩放比例与DPI对应关系
一.前言 当下,2K分辨率已成为主流标配,3K.4K也已经广泛应用. 在屏幕尺寸不变的情况下,高分辨率也就意味着高DPI,对于桌面程序而言,除了先天就支持高DPI的框架外(如UWP.Electron等 ...
随机推荐
- 查看并解除Oracle锁
当某个数据库用户在数据库中插入.更新.删除一个表的数据,或者增加一个表的主键时或者表的索引时, 常常会出现ora-00054:resource busy and acquire with nowait ...
- Spring Boot☞ 使用Spring-data-jpa简化数据访问层
效果图: 代码区: package com.wls.integrateplugs.jpa.primary.model; /** * Created by wls on 2017/8/24. */ im ...
- TF Boys (TensorFlow Boys ) 养成记(五): CIFAR10 Model 和 TensorFlow 的四种交叉熵介绍
有了数据,有了网络结构,下面我们就来写 cifar10 的代码. 首先处理输入,在 /home/your_name/TensorFlow/cifar10/ 下建立 cifar10_input.py,输 ...
- Sprig 面试中 问及 DI,IOC, AOP
面向切面编程,把散落在程序中的公共部分提取出来,做成切面类,这样的好处在于,代码的可重用,一旦涉及到该功能的需求发生变化,只要修改该代码就行,否则,你要到处修改,如果只要修改1.2处那还可以接受,万一 ...
- kubernetes使用ceph
一.有一个ceph cluster,假设已经准备好了,文档网上一大堆 二.开始集成ceph和kuberntes 2.1 禁用rbd features rbd image有4个 features,lay ...
- 编写高质量代码改善C#程序的157个建议——建议91:可见字段应该重构为属性
建议91:可见字段应该重构为属性 字段和属性的本质区别就是属性是方法. 查看下面这个Person类型: class Person { public string Name { get; set; } ...
- Javascirpt 常见的误区
var foo = new Object(); var bar = new Object(); var map = new Object(); map[foo] = "foo"; ...
- 深入理解java虚拟机(十四)正确利用 JVM 的方法内联
在IntelliJ IDEA里面Ctrl+Alt+M用来拆分方法.选中一段代码,敲下这个组合,非常简单.Eclipse也用类似的快捷键,使用 Alt+Shift+M.我讨厌长的方法,提起这个下面这个方 ...
- 设计模式12---享元模式(Flyweight Pattern)
享元模式 定义:共享元对象,运用共享技术有效地支持大量细粒度对象的复用.如果在一个系统中存在多个相同的对象,那么只需要共享一份对象的拷贝,而不必为每一次使用创建新的对象. 享元模式是为数不多的.只为提 ...
- NIOS II 自定义IP核的静态地址对齐和动态地址对齐
如果使用静态地址对齐(每个寄存器在Avalon总线上占4个字节的地址)设置IP使用静态地址对齐的方式为,在hw.tcl脚本里加上一局话:set_interface_property as addres ...