LayoutTransform 中的 ScaleTransform 不起作用,但适用于 RenderTransform
ScaleTransform in LayoutTransform not working but works with RenderTransform
我想在我的申请中做两件事。
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。旋转图像
适用于 ScaleTransform
和 RenderTransform
但需要它与 ScaleTransform
一起获得 ScrollViewer
问题出在 ScaleTransform
和 LayoutTransform
<Image.LayoutTransform>
<TransformGroup>
<ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
<RotateTransform Angle="{Binding RotateAngle}"/>
</TransformGroup>
</Image.LayoutTransform>
无法通过 ScrollViewer
同时实现 ScaleTransform
和 RotateTransform
我试过 Canvas
xaml
<Canvas.LayoutTransform>
<TransformGroup>
<ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
<RotateTransform Angle="{Binding RotateAngle}"/>
</TransformGroup>
</Canvas.LayoutTransform>
旋转的不同行为但能够实现这两种功能但ScrollViewer
不滚动。
canvas
的旋转行为
-
尝试对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 会自动将图像拉伸到面板中可用的 space,这会使您的缩放变换在布局过程中变得多余。
我想在我的申请中做两件事。
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。旋转图像
适用于 ScaleTransform
和 RenderTransform
但需要它与 ScaleTransform
一起获得 ScrollViewer
问题出在 ScaleTransform
和 LayoutTransform
<Image.LayoutTransform>
<TransformGroup>
<ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
<RotateTransform Angle="{Binding RotateAngle}"/>
</TransformGroup>
</Image.LayoutTransform>
无法通过 ScrollViewer
ScaleTransform
和 RotateTransform
我试过 Canvas
xaml
<Canvas.LayoutTransform>
<TransformGroup>
<ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
<RotateTransform Angle="{Binding RotateAngle}"/>
</TransformGroup>
</Canvas.LayoutTransform>
旋转的不同行为但能够实现这两种功能但ScrollViewer
不滚动。
canvas
的旋转行为-
尝试对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 会自动将图像拉伸到面板中可用的 space,这会使您的缩放变换在布局过程中变得多余。