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 サイトの他の関連記事を参照してください。