WPF 旋转图像并对齐它

WPF Rotate an Image and align it

我有一个图像组件,我想在其中旋转源:

<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)之前,我的 window 就像:

但轮换后:

因此,如您所见,宽度和高度已更改。

所以我的问题是:

谢谢

编辑:大小没变,我截取了两个不同大小的屏幕截图,Whosebug 会自动调整它们的大小。

我建议您使用 CompositeTransform 而不是 RotateTransformScaleTransform。然后你可以在 CompositeTransform 标签内调用 RotateTranslateX/TranslateY 来移动你的对象。

由于 ScaleX/ScaleY!

,您的代码维度已更改

问题是变换是在布局过程之后应用的。您应该在计算布局之前使用 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>