WPF旋转图像并将其对齐
我有一个要旋转源的图像组件:WPF旋转图像并将其对齐,wpf,xaml,rotation,rendertransform,Wpf,Xaml,Rotation,Rendertransform,我有一个要旋转源的图像组件: <Image Name="ImageTarget" HorizontalAlignment="Left" VerticalAlignment="Top" Stretch="Uniform" RenderTransformOrigin=".5,.5"> <Image.RenderTransform> <TransformGroup> <ScaleTransform ScaleX=
<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
的源代码
在转换(RenderTransformorMorigin和RotateTransform)之前,我的窗口如下所示:
但在轮换之后:
因此,正如您所看到的,宽度和高度都发生了变化
因此,我的问题是:
- 为什么尺寸变了
- 如何对齐左上角的旋转图像(与以前相同)
编辑:大小没有改变,我已经用不同的大小拍摄了两个不同的屏幕截图,stackoverflow会自动调整它们的大小。我建议您使用
CompositeTransform
而不是RotateTransform
和ScaleTransform
。然后,您可以在CompositeTransform
标记内调用Rotate
和TranslateX
/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>
不幸的是,WPF中没有CompositeTransform:哦,好的,对不起!你试过TransformGroup了吗?没问题:)Novitchi的答案解决了这个问题请看一下。请注意,你不需要两个ScaleTransforms。您可以绑定单个ScaleTransform的ScaleX和ScaleY。不幸的是,此解决方案似乎与UWP应用程序无关。你知道如何使它正常工作吗?你可以在我的问题中看到更多细节: