の WPF バージョンはControl.ScaleControl
何ですか?
フォントをIconTitleFontに設定することで、ユーザーのフォント設定を尊重しようとしています:
private void ApplyUserFontPreferences()
{
this.FontFamily = SystemFonts.IconFontFamily;
this.FontSize = SystemFonts.IconFontSize;
this.FontStyle = SystemFonts.IconFontStyle;
this.FontWeight = SystemFonts.IconFontWeight;
}
WinForms とは異なり、フォームの内容はフォントの変更によってスケーリングされません。
前
後(悪い)
実際には、フォーム上のすべてのコントロール (ボタンのサイズ、リストビュー列の幅などを含む) は、新しいレイアウトに合わせてスケーリングする必要があります。
後(良い)
WPF は ( WinForms とは異なり) フォント サイズの変更に応答しないため、次の仮想的な WPF バージョンを使用して、WPF フォームを自分でスケーリングしようとすることで問題を回避しましたScaleControl
。
private void ApplyUserFontPreferences()
{
Double scaleFactor = (SystemFonts.IconFontSize / this.FontSize); //i.e. new / old
this.ScaleControl(scaleFactor); //doesn't exist
this.FontFamily = SystemFonts.IconFontFamily;
// this.FontSize = SystemFonts.IconFontSize;
this.FontStyle = SystemFonts.IconFontStyle;
this.FontWeight = SystemFonts.IconFontWeight;
}
コントロール (およびすべての子コントロール) をスケーリングしたい別の例は、特定のサイズに収まるようにコントロール (およびすべての子コントロール) をスケーリングする必要がある場合です。この場合、フォーム全体を拡大縮小するのではなく、特定のコントロールのみを拡大縮小したいのです。