如何在 ScrollViewer 中找到缩放图像的顶角坐标?
How to find top corner coordinates of zoomed Image inside ScrollViewer?
我在 ScrollViewer 中有一张图像,我使用此代码(通过设置 RenderTransformOrigin 实现)从中心缩放,但无论缩放如何,ScrollViewer 的 Horizontal/Vertical 偏移量都保持为零。我正在使用 ScaleTransform 进行缩放,那部分效果很好,但转换实际上并没有修改图像——我认为这就是问题所在。 ScrollViewer 不会 "know" 图像已滚动,因此它不会调整偏移量。
考虑到滚动,我可以计算视口的左上角 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>
跳过整个 RenderTransform 内容。正如我所说,ScrollViewer
有自己的缩放比例。看看ZoomToFactor()
。这会让你前进。然后您将使用 ScrollViewer.ZoomFactor
和水平和垂直偏移值,您将能够确定您的裁剪。
我在 ScrollViewer 中有一张图像,我使用此代码(通过设置 RenderTransformOrigin 实现)从中心缩放,但无论缩放如何,ScrollViewer 的 Horizontal/Vertical 偏移量都保持为零。我正在使用 ScaleTransform 进行缩放,那部分效果很好,但转换实际上并没有修改图像——我认为这就是问题所在。 ScrollViewer 不会 "know" 图像已滚动,因此它不会调整偏移量。
考虑到滚动,我可以计算视口的左上角 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>
跳过整个 RenderTransform 内容。正如我所说,ScrollViewer
有自己的缩放比例。看看ZoomToFactor()
。这会让你前进。然后您将使用 ScrollViewer.ZoomFactor
和水平和垂直偏移值,您将能够确定您的裁剪。