7

高 dpi 設定での .NET Windows アプリケーションの表示に問題があります。

すべてのフォームが AutoScaleMode = DPI に設定されていますが、これですべての問題が解決するわけではありません。

基本的に、ラベルはフォントの拡大に​​対応するためにサイズが拡大しますが、他のコントロールの位置は変わらず、ラベルが他のコントロールや相互を覆い隠してしまいます。

画面は次のようになります: http://www.manageinvest.com/good.jpg ..高 DPI では、最終的に次のようになります: bad.jpg (これは私の最初の投稿なので、リンクは 1 つしか許可されていません)

助言がありますか?

前もって感謝します、

クリスチャン

4

3 に答える 3

6

理論的には、Winforms のフォントと DPI のスケーリングは自動的に行われます。実際には...それほどではありません。

水平方向よりも垂直方向のスケーリングにうまく対応していることに気付きましたが、それでも完全にはほど遠い.

私の経験では、スケーリングは次の 2 つのいずれかを行う場合にのみ信頼できます。

  1. デザイナーをまったく使用しないでください。これは非常に面倒ですが、レイアウトを必要な量だけ制御できます。

  2. 組み込みのレイアウト コントロール、具体的にはFlowLayoutPanelと を使用しTableLayoutPanelます。これらの人はあなたの親友です。それらなしでWinformsで何もすることはめったにありません。

あなたの場合、私はおそらく#2に行きます。TableLayoutPanelスクリーン キャプチャに基づいて、レイアウトをとFlowLayoutPanelコンテナの組み合わせ (場合によっては 1 つだけでも) に合わせるのは非常に簡単だと思いますTableLayoutPanel

于 2010-01-22T04:25:05.177 に答える
3

AutoScaleMode および AutoSize 機能を調べる必要があります。ドッキング機能と組み合わせると、あなたが望むものを達成できるはずです.

私はそれについて本当に良い記事を持っていましたが、リンクは死んでいます...とにかく、これはあなたが始めるはずです:

http://msdn.microsoft.com/en-us/library/ms229605.aspx

http://www.sellsbrothers.com/writing/winformsAutoScaling.htm

http://msdn.microsoft.com/en-us/library/system.windows.forms.autoscalemode.aspx

于 2010-01-22T11:16:43.550 に答える
1

これで問題が解決しない場合があります。

しかし、Label とテキスト コントロールを垂直に積み重ねる必要があるという難しい方法を学びました。つまり、Text Box をラベルの横ではなく、Label の下に配置します。これにより、さまざまな言語のテキスト幅が英語のテキストよりも大きくなる可能性があるため、複数の言語のサポートを含む多くの問題が解決されました

于 2010-01-22T04:16:44.950 に答える