ホームページ > バックエンド開発 > C++ > WinForms コントロールをシステム フォントと DPI 設定に合わせて適切に自動スケールするにはどうすればよいですか?

WinForms コントロールをシステム フォントと DPI 設定に合わせて適切に自動スケールするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-19 08:16:08
オリジナル
825 人が閲覧しました

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 でフォントのラベルを継承します: 太字で表示されるように、プロパティ ウィンドウでコントロールのフォントを明示的に設定します。
  • 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 スケーリング動作をオーバーライドします。
  • コンテナレベルでのフォントの設定は避けてください。
  • コントロールを UserControl に直接ではなくパネルにドッキングします。
  • コントロールを動的に追加する場合、レイアウトを一時停止して再開します
  • ContainerControl から派生した基本クラスの AutoScaleMode を Inherit として保持します。
  • MinSize と MaxSize は、デザイナーではなくコードで定義します。
  • コンテナ内で ドックまたはアンカー を一貫して使用します。
  • 拡大縮小時のトリミングを避けるため、96dpi のデザイナーで フォーム サイズを 1000x680 未満に保ちます。

以上がWinForms コントロールをシステム フォントと DPI 設定に合わせて適切に自動スケールするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート