ホームページ > バックエンド開発 > C++ > 高 DPI 環境での自動調整のために WinForms コントロールのスケーリングを最適化するにはどうすればよいですか?

高 DPI 環境での自動調整のために WinForms コントロールのスケーリングを最適化するにはどうすればよいですか?

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

How Can I Optimize WinForms Control Scaling for Auto-Adjustment in High-DPI Environments?

WinForms コントロール スケーリング: 高 DPI 環境での最適な自動調整用

高 DPI 環境における WinForms の自動スケーリング機能は限られていると一般に考えられていますが、実際には、.NET 2.0 以降では自動スケーリング機能が大幅に向上しています。ただし、これらの改善点を最大限に活用するには、開発者は特定の設計ガイドラインに従う必要があります。

自動スケーリングをサポートしないコントロール

一部のコントロールにはスケーリングに制限があります:

  • Label: AutoSize 属性が無効で、フォントが継承フォントである場合は、スケーリング エラーを防ぐために Font 属性を明示的に設定します。
  • ListView: 列幅の調整を処理するためにフォームの ScaleControl メソッドをオーバーライドします。
  • SplitContainer: Panel1MinSizePanel2MinSize、および SplitterDistance 属性の設定は避けてください。
  • TextBox: MultiLine 属性が有効で、フォントが継承フォントである場合は、Font 属性を明示的に設定します。
  • ToolStripButton: CreateGraphics.DpiX.DpiY に基づいて ToolStrip.ImageScalingSize を調整します。
  • PictureBox: SizeMode 属性が Zoom または StretchImage に設定されていることを確認してください。
  • TreeView: CreateGraphics.DpiX.DpiY に基づいて ImageList.ImageSize を設定します。
  • フォーム: 固定サイズのフォームを作成した後、フォームを手動で拡大縮小します。

デザインガイドライン

1. コンテナ制御

  • すべてのコンテナ コントロールの AutoScaleMode プロパティを Font に設定します。
  • 96dpi およびデフォルトの MS Sans Serif フォントを想定して、AutoScaleDimensions 属性を new System.Drawing.SizeF(6F, 13F) に割り当てます (必要に応じて調整します)。

2. デザイナーの構成

  • 96dpi でデザインします。 Visual Studio で高 DPI スケーリング動作を「システム」にオーバーライドします。
  • コンテナ コントロールの AutoSize プロパティが有効になっていることを確認します。

3. フォント管理

  • Font プロパティは、リーフ コントロール レベルまたは基本フォームのコンストラクター (アプリケーション全体のデフォルトの場合) でのみ設定します。
  • 基本フォームの Font を変更すると、それに応じて AutoScaleDimensions が再計算されます。

4. ドッキングとアンカー

  • コントロールを UserControl に直接アンカーすることは避け、代わりにパネルまたは他のコンテナを使用してください。
  • Dock または Anchor Right の代わりに Bottom 属性を使用します。

5. 動的に追加されたコントロール

  • 動的コントロールを追加する前にレイアウトを一時停止し、AutoScaleDimensionsAutoScaleMode を設定してから、レイアウトを再開します。

6. 基本クラスと AutoScale

  • 継承された基本クラスの AutoScaleMode 属性は Inherit に設定する必要があります。他の値に設定すると、自動スケーリングが無効になる場合があります。

7. ウィンドウサイズ制限

  • 静的な MaxSize 属性の使用は避けてください。コンストラクターまたは OnLoad イベントで MinSizeMaxSize をスケーリングされたディメンションに設定します。
  • フォームのサイズが 1000x680 ClientSize (デザイナーでは 994x642) を超えないようにしてください。

以上が高 DPI 環境での自動調整のために WinForms コントロールのスケーリングを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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