我在ScrollViewer中有一个图像,我使用此代码从中心缩放(通过设置RenderTransformOrigin完成),但无论缩放如何,ScrollViewer的水平/垂直偏移都保持为零。我正在使用ScaleTransform进行缩放,并且该部分工作得很好,但转换实际上并没有修改图像 - 我认为这是问题所在。 ScrollViewer不会“知道”图像滚动,因此不会调整偏移。
考虑到某种程度的滚动,我可以计算视口的左上角x / y吗?此外,我不能理解偏移的目的 - 给定xaml和我的图像大小640x480(ScrollViewer是600x480)所以偏移量不应该为零,是吗?
尝试将此信息传递给裁剪方法。
<ScrollViewer Width="600" x:Name="ScrollViewerImage" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Hidden" ZoomMode="Enabled" >
<CaptureElement Name="PreviewControl" Width="Auto" RenderTransformOrigin="0.5 0.5" DoubleTapped="PreviewControl_DoubleTapped" Stretch="Uniform">
<CaptureElement.RenderTransform >
<ScaleTransform x:Name="ZoomScale" />
</CaptureElement.RenderTransform>
</CaptureElement>
</ScrollViewer>
答案 0 :(得分:1)
跳过整个RenderTransform的东西。正如我所说,ScrollViewer
有自己的缩放。看看ZoomToFactor()
。这将使你前进。然后,您将使用ScrollViewer.ZoomFactor
和水平和垂直偏移值,并且您将能够确定裁剪。