如何在 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 和水平和垂直偏移值,您将能够确定您的裁剪。