首頁 > 後端開發 > C++ > WinForms 控制項如何正確自動縮放到系統字體和 DPI 設定?

WinForms 控制項如何正確自動縮放到系統字體和 DPI 設定?

Mary-Kate Olsen
發布: 2025-01-19 08:16:08
原創
869 人瀏覽過

How Can WinForms Controls Be Properly Auto-Scaled to System Font and DPI Settings?

WinForms 自動縮放:適應系統字體和 DPI 設定

引言

過去的評論經常認為 WinForms 的自動縮放功能不如 WPF。然而,根據作者的研究和測試,WinForms 在 .NET 2.0 中的自動縮放功能有了顯著改進。

縮放限制控制項

儘管有所改進,WinForms 中某些控制項仍存在縮放限制,應避免使用:

  • AutoSize = False 且繼承字體的 Label: 在屬性視窗中明確設定控制項的字體以使其顯示為粗體。
  • ListView 列寬:(重寫窗體的 ScaleControl 來修正此問題)
  • SplitContainer 的 Panel1MinSize、Panel2MinSize 和 SplitterDistance 屬性
  • MultiLine = True 且繼承字型的 TextBox: 明確設定控制項的字型。
  • ToolStripButton 的圖像: 在窗體的建構子中調整 ToolStrip.AutoSize 和 ToolStrip.ImageScalingSize。
  • PictureBox.SizeMode 必須設定為 Zoom 或 StretchImage。
  • TreeView 的圖片: 以 CreateGraphics.DpiX 和 .DpiY 設定 ImageList.ImageSize。
  • 窗體大小: 建立後手動縮放固定大小的窗體。

自動縮放設計指南

為了確保 WinForms 中的正確自動縮放,必須遵循以下準則:

  • 將所有 ContainerControls 的 AutoScaleMode 設定為 Font
  • 將所有 ContainerControls 的 AutoScaleDimensions 設定為 6F, 13F,假設為 96dpi 和預設字體(MS Sans Serif)。
  • 96dpi 下工作 並編輯屬性以覆寫 Visual Studio 的 DPI 縮放行為。
  • 避免在容器層級設定字體。
  • 將控制項停靠在面板上,而不是直接停靠到 UserControls 上。
  • 動態新增控制項時,暫停和恢復佈局
  • 將衍生自 ContainerControl 的基底類別的 AutoScaleMode 保持為 Inherit
  • 在程式碼中定義 MinSize 和 MaxSize,而不是在設計器中。
  • 在容器內一致地使用 停靠或錨定
  • 在 96dpi 下,將設計器中的 窗體大小保持在 1000x680 以下,以避免縮放時裁剪。

以上是WinForms 控制項如何正確自動縮放到系統字體和 DPI 設定?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板