[原创][开源]C# Winform DPI自适应方案,SunnyUI三步搞定


  • SunnyUI.Net, 基于 C# .Net WinForm 开源控件库、工具类库、扩展类库、多页面开发框架

    • Blog: https://www.cnblogs.com/yhuse
    • Gitee: https://gitee.com/yhuse/SunnyUI
    • GitHub: https://github.com/yhuse/SunnyUI
    • 帮助文档目录: https://www.cnblogs.com/yhuse/p/SunnyUI_Menu.html
    • 欢迎交流,QQ群: SunnyUI技术交流群 56829229 (SunnyUI技术交流群) 

Winform窗体随着屏幕的DPI缩放,会引起窗体变形及字体变形。
SunnyUI的DPI缩放自适应方案目标为随着DPI缩放,窗体和字体均不变形,从而实现界面的美观。
主要有以下三步操作:

1、设置窗体和自定义用户控件的AutoScaleMode为None
实现目标:禁止窗体因为字体大小缩放变形
因为显示的高分屏,然后操作系统的设置了字体缩放引起的。窗体默认的AutoScaleMode = Font,控件会因为高分屏自动缩放。
解决方法:设置窗体、用户控件的AutoScaleMode = None
输入图片说明

2、设置app.manifest的dpiAware为true
实现目标:禁止窗体因为DPI缩放变形
选择项目属性,安全性
输入图片说明
选中 启用 ClickOnce 安全设置,再取消选中。
这时候项目的文件里就多了app.manifest
输入图片说明
按下面代码修改,启用dpiAware

  

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