gpt4 book ai didi

c# - LayoutTransform 中的 ScaleTransform 不起作用,但适用于 RenderTransform

转载 作者:太空狗 更新时间:2023-10-29 23:21:40 28 4
gpt4 key购买 nike

我想在我的应用程序中做两件事。

1。缩放图像

可以使用RenderTransform。但需要在LayoutTransform中实现启用Scrollviewer

xaml

工作。

 <Image.RenderTransform>
<ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
</Image.RenderTransform>

不工作

<Image.LayoutTransform>
<ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
</Image.LayoutTransform>

2。旋转图片

适用于 ScaleTransformRenderTransform 但需要它与 ScaleTransform 一起获得 ScrollViewer

问题出在 ScaleTransformLayoutTransform

<Image.LayoutTransform>
<TransformGroup>
<ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
<RotateTransform Angle="{Binding RotateAngle}"/>
</TransformGroup>
</Image.LayoutTransform>

无法同时使用 ScrollViewer 实现 ScaleTransformRotateTransform

我已经尝试过 Canvas

xaml

<Canvas.LayoutTransform>
<TransformGroup>
<ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
<RotateTransform Angle="{Binding RotateAngle}"/>
</TransformGroup>
</Canvas.LayoutTransform>

旋转的不同行为但能够实现两种功能,但 ScrollViewer 不滚动。

Canvas 的旋转行为

- enter image description here

enter image description here

尝试用 ViewBox 做同样的事情

旋转适用于 ScrollViewer 缩放无效。

完整代码如下

<ScrollViewer>
<Viewbox RenderTransformOrigin="0.5,0.5" Height="Auto" Width="Auto" ScrollViewer.CanContentScroll="True">
<Viewbox.LayoutTransform>
<TransformGroup>
<ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
<RotateTransform Angle="{Binding RotateAngle}"/>
</TransformGroup>
</Viewbox.LayoutTransform>
<Image RenderTransformOrigin="0.5,0.5" >
<Image.Source>
<BitmapImage UriSource="{Binding ImagePath}" ScrollViewer.CanContentScroll="True"></BitmapImage>
</Image.Source>
</Image>
</Viewbox>
</ScrollViewer>

任何人都可以帮助我提出建议。

'GazTheDestroyer' 为我建议的可行解决方案

XAML

<Image RenderTransformOrigin="0.5,0.5" Stretch="None" >
<Image.LayoutTransform>
<TransformGroup>
<ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
<RotateTransform Angle="{Binding RotateAngle}"/>
</TransformGroup>
</Image.LayoutTransform>
<Image.Source>
<BitmapImage UriSource="{Binding ImagePath}" ScrollViewer.CanContentScroll="True"></BitmapImage>
</Image.Source>
</Image>

最佳答案

尝试将 Stretch="None" 添加到您的 Image 标签,否则无法提供明确的高度和宽度。

在某些面板中,WPF 会自动将图像拉伸(stretch)到面板中的可用空间,这将使您的缩放变换在布局过程中变得多余。

关于c# - LayoutTransform 中的 ScaleTransform 不起作用,但适用于 RenderTransform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31747574/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com