-
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群:
56829229 (SunnyUI技術交流群)
Winform表單隨著螢屏的DPI縮放,會引起表單變形及字體變形,
SunnyUI的DPI縮放自適應方案目標為隨著DPI縮放,表單和字體均不變形,從而實作界面的美觀,
主要有以下三步操作:
1、設定表單和自定義用戶控制元件的AutoScaleMode為None
實作目標:禁止表單因為字體大小縮放變形
因為顯示的高分屏,然后作業系統的設定了字體縮放引起的,表單默認的AutoScaleMode = Font,控制元件會因為高分屏自動縮放,
解決方法:設定表單、用戶控制元件的AutoScaleMode = None
2、設定app.manifest的dpiAware為true
實作目標:禁止表單因為DPI縮放變形
選擇專案屬性,安全性
選中 啟用 ClickOnce 安全設定,再取消選中,
這時候專案的檔案里就多了app.manifest
按下面代碼修改,啟用dpiAware
<!-- 指示該應用程式可感知 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控制元件
設定DPIScale為true
編譯程式,在不同的DPI縮放下測驗編譯好的SunnyUI.Demo.exe
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/461800.html
標籤:C#
