8

私の現在のモニターでは、1 インチあたり 120 ピクセルの DPI 設定を好みます (これは、ウィンドウがデフォルトとして提案しています)。ただし、フォームを設計した後、1 インチあたり 120 ピクセルを使用しないシステムでは、フォームが正しくレイアウトされないことがよくあります。

デザイナを使用するときはいつでも、ディスプレイ設定を 96 ピクセル/インチに設定する必要があるのでしょうか?

また、他の開発者が異なる DPI を使用している場合、いくつかの問題があります。デザイナーでフォームを開き、テキスト編集コントロールのようなものを移動すると、突然、それ自体も自動的にサイズ変更されることに気付きます。次に、他のコントロールとはサイズが異なる 1 つのコントロールがあり、混乱しています。

PS 関連記事を読みました。それらはすべて興味深いものですが、私の質問には答えていません。

.NET WinForms アプリでフォント DPI を制御する方法

C#WinFormsはDPIスケーリングを無効にします

WinForms の異なる DPI レイアウト

DPI が正しくスケーリングされない

Visual Studio と DPI の問題

4

2 に答える 2

5

いいえ。WinForms デザイナーを使用する場合、DPI を常に 96 に設定する必要はありません。

AutoScaleMode プロパティを Dpi に設定すると、デザイナーは現在のシステム DPI をフォームの AutoScaleDimensions プロパティの designer.cs ファイルに書き込みます。デザイナーが異なる DPI のシステムで使用される場合、この情報はフォームのサイズ変更に使用され、デザイナーは異なる DPI で使用できます。

他のスケーリング モードを試したところ、うまくいかなかったようです。「なし」は、実行時にコントロールがスケーリングされないことを意味し、「フォント」は丸めエラーに悩まされているようで、ディスプレイ設定の DPI が変更されると、コントロールのサイズがわずかに変化してエラーが発生する可能性がありました。

また、フォームに追加された UserControls については、AutoScaleMode を Inherit に設定するのが最善であることもわかりました。Dpi を使用すると、そのコントロールが 2 回再スケーリングされ、正しくレイアウトされなくなります。


数時間の実験とインターネット検索を行った後、上記のガイドラインを思いつきました。次の 2 つの記事を見つけました。

Windows フォームでの自動スケーリング

と:

フォント Dpi が低いシステムでは、UserControl の子コントロールがクリップされる場合があります。

于 2012-09-13T12:21:50.793 に答える
1

dpi を永続的に別の値に設定しても効果があるとは思いません。問題は、dpi を変更すると問題が発生することです。つまり、使用しているフォーム レイアウトが異なる dpi を処理できないということです。

異なる dpi でテストし、フォーム表示に問題が発生するかどうかを確認する必要があることを除いて、絶対的な解決策はありません。問題の原因を突き止めるのは難しくなく、何を避けるべきかをすぐに学ぶことができます。

于 2012-09-12T11:46:50.187 に答える