3

たとえば、コントロールの幅を 2 ​​倍にする代わりに、ScaleX="2" を使用する必要があるのはなぜですか??

<Button Width = "100" Content="Button1"/>


<Button Width = "50" Content="Button2">
   <Button.RenderTransform>
      <ScaleTransform ScaleX="2" />
   </Button.RenderTransform>
</Button>

両方のボタンはまったく同じように見えるので、繰り返しますが、どのスケールが適していますか

4

3 に答える 3

3

あなたの「まったく同じ」という概念は、私のものとは違うようです。

スクリーンショット

指定したサイズは、レイアウト内でコントロールが占めるスペースWidthHeight影響します。つまり、コントロールが占めるスペースは増減する可能性がありますが、フォント サイズは同じままです。これRenderTransformは、レイアウトに関係のない操作であるため、コントロールが歪む可能性があります。

レンダリング変換は、レイアウト サイズまたはレンダリング サイズ情報を再生成しません。Render Transform は、通常、要素にアニメーション化または一時的な効果を適用することを目的としています。たとえば、要素は、フォーカスまたはマウスオーバーされたときにズームしたり、ユーザー インターフェイス (UI) のその部分に目を引くためにロード時にジッターしたりする場合があります。


プロパティも参照してくださいLayoutTransform。これはレイアウトに影響しますが、それでもコントロールを歪めます。

于 2011-07-15T00:41:57.887 に答える
2

コントロールの一部を拡大縮小できない場合に便利です。DatePicker コントロールについて考えてみましょう。デフォルトの実装にはドロップダウン カレンダーがあり、ユーザーの好みには小さすぎるため、次の XAML のスニペットを App.xaml ファイルに導入しました。

<Style TargetType="w:DatePicker">
    <Setter Property="CalendarStyle">
        <Setter.Value>
            <Style TargetType="w:Calendar">
                <Setter Property="LayoutTransform">
                    <Setter.Value>
                        <ScaleTransform ScaleX="1.5" ScaleY="1.5" />
                    </Setter.Value>
                </Setter>
            </Style>
        </Setter.Value>
    </Setter>
</Style>

カレンダーは 1.5 倍の大きさになり、ユーザーは満足しています。直接設定できる「CalendarWidth」または「CalendarHeight」プロパティがないため、ScaleTransformその日を節約できました。

于 2011-07-15T00:26:49.133 に答える
2

幅のあるボタンよりも複雑だったら? 複雑なパス/ジオメトリ、またはコントロールのグループがある場合はどうしますか? 行って手動ですべてを変更したくないでしょう。カスタム コントロールがあり、1 つのインスタンスのサイズを 100x100 にし、別のインスタンスのサイズを 150x150 にしたい場合はどうでしょうか。ズーム機能 (Google マップを考えてください) を実装しているとしたらどうでしょうか。

つまり、特定の例では、あまり役に立ちません。しかし、それ以外にも多くのケースがあります。

于 2011-07-15T00:40:59.973 に答える