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

发布时间:2022-06-08 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了[原创][开源]C# Winform DPI自适应方案,SunnyUI三步搞定脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
  • SunnyUI.Net, 基于 C# .Net WinForm 开控件库、工具类库、扩展类库、多页面开发框架

    @H_406_4@

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

    • 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群: 

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

       56829229 (SunnyUI技交流群) 

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

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

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

2、设置app.manifest的dpiAware为true实现目标:禁止窗体因为DPI缩放变形选择项目属性,安全性

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

选中 启用 ClickOnce 安全设置,再取消选中。这时候项目的文件里就多了app.manifest

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

按下面代码修改,启用dpiAware

@H_512_51@  <!-- 指示该应用程序可感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
       自动缩放。Windows PResentation Foundation (WPF)应用程序自动感知 DPI,无需
       选择加入。选择加入此设置的 Windows 窗体应用程序(面向 .NET Framework 4.6)还应
       在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。
       
       将应用程序设为感知长路径。请参阅 https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->

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

  <!-- 启用 Windows 公共控件和对话框的主题(Windows xp 和更高版本) -->
  <!--
 

3、设置DPIScale为true实现目标:DPI缩放后字体大小不变确认编译时DPI缩放为100%在主窗体上放置UIStyleManager控件

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

设置DPIScale为true

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

编译程序,在不同的DPI缩放下测试编译好的SunnyUI.Demo.exe

脚本宝典总结

以上是脚本宝典为你收集整理的[原创][开源]C# Winform DPI自适应方案,SunnyUI三步搞定全部内容,希望文章能够帮你解决[原创][开源]C# Winform DPI自适应方案,SunnyUI三步搞定所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。