使用LayoutTransform应用缩放时,WPF e.GetPosition()坐标不正确

时间:2018-05-05 09:53:05

标签: c# wpf layouttransform

我有一个WPF应用程序,它适用于用户选择的图像的特定区域。此区域由单击并拖动鼠标触发的框选择定义。 (你到处都可以找到常用的盒子选择)

XAML:

<ScrollViewer Background="AliceBlue" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" ClipToBounds="True" PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
    <Grid x:Name="ImageOuterGrid">
        <Image x:Name="ActiveImage" MouseLeftButtonDown="ActiveImage_MouseLeftButtonDown" MouseLeftButtonUp="ActiveImage_MouseLeftButtonUp" MouseWheel="ActiveImage_MouseWheel" MouseMove="ActiveImage_MouseMove"/>

        <!-- Selection Rectangle -->
        <Canvas>
            <Rectangle x:Name="SelectionRectangle" Stroke="Black" StrokeThickness="2" StrokeDashArray="4 4" Width="0" Height="0" Canvas.Left="10" Canvas.Top="10"/>
        </Canvas>
    </Grid>
</ScrollViewer>

当我执行e.GetPosition(ImageOuterGrid)(e是MouseButtonEventArg)时,只有在我的图像中不应用任何LayoutTransform时,我才能正确获取图像的像素坐标。但是,确定图像太大或太小都会导致选择比应该更难。

这里的问题是如果我使用LayoutTransform对图像应用缩放,e.GetPosition()忽略它,我得到两个不同的坐标,用于在有和没有缩放的图像上单击相同的确切位置。

有人可以指导我吗?

0 个答案:

没有答案