1

ソースを回転させたい Image コンポーネントがあります。

<Image Name="ImageTarget" HorizontalAlignment="Left" VerticalAlignment="Top" Stretch="Uniform" RenderTransformOrigin=".5,.5">
    <Image.RenderTransform>
        <TransformGroup>
            <ScaleTransform ScaleX="{Binding Main.BindedViewMode, Converter={StaticResource ImageSizeConverter}}" />
            <ScaleTransform ScaleY="{Binding Main.BindedViewMode, Converter={StaticResource ImageSizeConverter}}" />
            <RotateTransform Angle="-90" />
        </TransformGroup>
    </Image.RenderTransform>
</Image>

コードからのソースを設定しImageTargetます。

変換 (RenderTransformOrigin と RotateTransform) の前に、私のウィンドウは次のようになりました。

ここに画像の説明を入力

しかし、回転後:

ここに画像の説明を入力

ご覧のとおり、幅と高さが変更されました。

だから私の質問は:

  • なぜサイズが変わったのですか?
  • 回転した画像を左上隅に揃える方法 (前と同じ) ?

ありがとう

編集: サイズは変更されていません。2 つの異なるスクリーンショットを異なるサイズで撮影しました。stackoverflow は自動的にサイズを変更します。

4

2 に答える 2

4

問題は、レイアウト パスの後に Transforms が適用されたことです。LayoutTransformレイアウトが計算される前に、を使用して変換を実行する必要があります。

<Image Name="ImageTarget" HorizontalAlignment="Left" VerticalAlignment="Top" Stretch="Uniform" RenderTransformOrigin=".5,.5">
<Image.LayoutTransform>
    <TransformGroup>
        <ScaleTransform ScaleX="{Binding Main.BindedViewMode, Converter={StaticResource ImageSizeConverter}}" />
        <ScaleTransform ScaleY="{Binding Main.BindedViewMode, Converter={StaticResource ImageSizeConverter}}" />
        <RotateTransform Angle="-90" />
    </TransformGroup>
</Image.LayoutTransform>

于 2015-06-18T07:50:35.037 に答える
-1

CompositeTransformの代わりに使用することをお勧めします。次に、タグ内でand /を呼び出して、オブジェクトを移動できます。RotateTransformScaleTransformRotateTranslateXTranslateYCompositeTransform

ScaleX/のためにコードのサイズが変更されましたScaleY!

于 2015-06-18T07:37:40.057 に答える