C# 在带有ScrollViewer的ContentPresenter中,是否有一种简单的方法来计算位图图像上的鼠标坐标?

C# 在带有ScrollViewer的ContentPresenter中,是否有一种简单的方法来计算位图图像上的鼠标坐标?,c#,wpf,mouse,scrollviewer,contentpresenter,C#,Wpf,Mouse,Scrollviewer,Contentpresenter,我在连接到ScrollViewer的ContentPresenter中有一个位图图像(2000 x 2000)。因此,图像可以缩放和滚动 有没有一种简单的方法可以知道鼠标相对于图像的x,y坐标?也就是说,当我将鼠标移到图像上时,它返回它所经过的像素的对应x,y 更糟糕的情况是计算从窗口边缘的偏移量,然后将鼠标的x、y乘以滚动和缩放因子 我只是想知道WPF是否已经内置了一个方法来处理这个问题。这将计算Contentviewer和scrollabar中位图上鼠标的“缩放”和“平移”偏移量:

我在连接到ScrollViewer的ContentPresenter中有一个位图图像(2000 x 2000)。因此,图像可以缩放和滚动

有没有一种简单的方法可以知道鼠标相对于图像的x,y坐标?也就是说,当我将鼠标移到图像上时,它返回它所经过的像素的对应x,y

更糟糕的情况是计算从窗口边缘的偏移量,然后将鼠标的x、y乘以滚动和缩放因子


我只是想知道WPF是否已经内置了一个方法来处理这个问题。

这将计算Contentviewer和scrollabar中位图上鼠标的“缩放”和“平移”偏移量:

                ImageSource imageSource = image.Source;
            BitmapImage bitmapImage = (BitmapImage)imageSource;
             pixelMousePositionX = e.GetPosition(image).X * bitmapImage.PixelWidth / image.Width;
             pixelMousePositionY = e.GetPosition(image).Y * bitmapImage.PixelHeight / image.Height;

这似乎解释了与contentpresenter相关的要点,但我认为它不会计算缩放和平移。您的“最坏情况”几乎是1-2行代码。我不知道WPF有什么东西给你。我在这里找到了解决方案:我用
var pixelMousePositionX=e.GetPosition(myImage.X*bitmapImage.PixelWidth/myImage.ActualWidth获得了更好的结果;var pixelMousePositionY=e.GetPosition(myImage).Y*bitmapImage.PixelHeight/myImage.ActualHeight你从哪里得到这个公式的?