Abi*_*hew 5 c# wpf xaml mvvm wpf-4.0
我正在尝试在我的应用程序中做两件事。
能够与RenderTransform。但需要实现LayoutTransform才能启用Scrollviewer。
工作。
<Image.RenderTransform>
<ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
</Image.RenderTransform>
Run Code Online (Sandbox Code Playgroud)
无法运作
<Image.LayoutTransform>
<ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
</Image.LayoutTransform>
Run Code Online (Sandbox Code Playgroud)
既工作ScaleTransform和RenderTransform,但需要它ScaleTransform来获得ScrollViewer
问题是,在ScaleTransform与LayoutTransform
<Image.LayoutTransform>
<TransformGroup>
<ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
<RotateTransform Angle="{Binding RotateAngle}"/>
</TransformGroup>
</Image.LayoutTransform>
Run Code Online (Sandbox Code Playgroud)
不能太兼顾ScaleTransform和RotateTransform有ScrollViewer
我尝试过 Canvas
<Canvas.LayoutTransform>
<TransformGroup>
<ScaleTransform ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}" />
<RotateTransform Angle="{Binding RotateAngle}"/>
</TransformGroup>
</Canvas.LayoutTransform>
Run Code Online (Sandbox Code Playgroud)
旋转行为不同,但能够实现两种功能,但 ScrollViewer不能滚动。
尝试与 ViewBox
ScrollViewer Zoom不能正常旋转。
完整代码如下
<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>
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我提出建议。
“ GazTheDestroyer”建议的适用于我的解决方案
<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>
Run Code Online (Sandbox Code Playgroud)
尝试添加Stretch="None"到您的Image标签,或者无法提供明确的高度和宽度。
在某些面板中,WPF 会自动将图像拉伸到面板中的可用空间,这将使您的比例变换在布局过程中变得多余。