3

WPF に自動コントロール サイズ変更のようなものがあるかどうか知りたいです。

つまり、コードで定義することなく、ユーザーの画面解像度に関して要素のサイズを自動調整する方法です。

ありがとう。

4

2 に答える 2

3

まず、WPF はデバイスに依存しないピクセルを使用します。つまり、ユーザーが選択した DPI に合わせて適切にスケーリングされます。とはいえ、ここで DPI について質問しているのではなく、解像度によるスケーリングについて質問していると思います。

Window によって提供される使用可能なスペースに合わせて UI をスケーリングする場合は、ViewBox コントロールを Window のルート要素として使用できます。次に、そこに入れるものはすべて、Viewbox の構成方法に従ってスケーリングされます。

通常、アプリケーションはより多くのスペースを利用するために成長/リフローするため、これはアプリケーションで使用される典型的なアプローチではないことに注意してください。たとえば、グリッドを使用して、UI スペースのより重要なセクションを別のセクションよりも優先させることができます。

于 2009-10-25T22:32:14.787 に答える
3

答えはイエスです。ウィンドウのサイズに基づいてコントロールのサイズを調整する場合は、さまざまな方法があります。

ほとんどすべてのコントロールで、これらは役に立ちます:

HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Margin="..." (set your margin to control the position)

グリッドを使用した柔軟なレイアウトの場合:

<Grid>
ColumnDefinition.Width="*"
RowDefinition.Height="*"

パネルで囲まれた中央領域、または行/列の残りの部分を埋める場合:

<DockPanel>

何かを同じ形に保ちながら、フィットするように伸ばしたり縮めたりするには:

<ViewBox>

他にもたくさんあります。

ユーザーの Windows ディスプレイ設定 (DPI など) に基づいて画面上でコントロールを拡大または縮小する場合は、既定で行われます。ユーザーがシステム アイコンやフォントを大きくすると、テキスト、アイコン、フォントなども大きくなります。

画面上のオブジェクトのサイズを特定のシステム設定に結び付けたい場合は、次のように SystemParameters および SystemFonts クラスのプロパティにバインドできます。

SystemFonts.CaptionFontSize
SystemFonts.MenuFontSize
SystemFonts.IconFontSize
SystemFonts.StatusFontSize

SystemParameters.IconHeight
SystemParameters.IconVerticalSpacing
SystemParameters.MaximizedPrimaryScreenHeight

これらの設定は約 75 あります。DPI に基づいてオブジェクト サイズに対して WPF が行う通常の調整で通常は十分であるため、通常はこれらを使用しません。

通常、画面上のオブジェクトを特定のピクセル数に強制することは望ましくありません。これは、エンド ユーザーが Windows を大きく表示するように構成していても、高解像度の画面では小さく表示されるためです。これは良いことではありません。ここでの 1 つの例外は、スクリーンショットを特定の画面解像度のビットマップとしてキャプチャする場合です。その場合、次のようにサイズを設定できます。

control.Height =
  desiredHeightInActualScreenPixels
    * System.Windows.SystemParameters.MenuHeight
    / System.Windows.Forms.SystemInformation.MenuHeight;
于 2009-11-06T23:50:38.500 に答える