web-dev-qa-db-ja.com

ユーザーコントロールの相対的なスケールサイズはどうですか?

(画像エディタで)画像のようなユーザーコントロールの相対的なスケールサイズを設定する方法。

例(100%):

alt text
(出典: stegnar.com

縮小されたUC(70%):

alt text
(出典: stegnar.com

これは画像エディタで実現できますが、WPFで実現したいと思います。 :)何も隠さずに(スクロールバーなしで)、アプリケーションを別の画面解像度に調整するためにこれが必要です。

23
Peter Stegnar

使用可能なスペースを埋めるようにコンテンツをスケールアップ/スケールダウンするViewBoxコントロールを試すことができます。

<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="Window1">
<Grid>
    <Viewbox StretchDirection="Both" Stretch="Uniform">
        <local:UserControl1 Height="600" Width="600"/>
    </Viewbox>
</Grid>
33
Milan Nankov

コンテナ全体をViewBoxに配置できます

<Viewbox StretchDirection="Both" Stretch="Uniform">
  <Grid>...</Grid>
</Viewbox>

それぞれのテキストブロックをその中に配置する必要はありません!

6
eon

(Milan Nankovが言ったように)Viewboxの使用は素晴らしいアイデアです。注意しなければならないことの1つは、他の視覚的側面もズームインまたはズームアウトすることです。

たとえば、サイズが200 X 1000のテキストボックスは、サイズが20 X100のテキストボックスを10倍に拡大したものとは大きく異なります。

WPFには、コンテナーのサイズに応じてコントロールのサイズを変更できる多くのレイアウトオプションが用意されています。ただし、テキストのサイズは変更されません。 Viewboxはこの問題を解決しますが、別の問題が発生します。ズームの前後でビューボックスに同じテキストボックスを表示している下の画像を確認してください。

Artifacts introduced by the use of viewbox

使用できるトリックの1つは、すべてのtextblockをビューボックスに配置することです。しかし、それはやり過ぎだと思います。私はこのトリックを真剣に支持していません。自分でチェックして、実用的かどうかを返信してください。

別のトリックは、コントロールの高さをフォントサイズにバインドすることです。その場合、コンバーターが必要になります。この返信を参照してください。 グリッドのTextBoxのフォントのサイズを変更

5
Trainee4Life