我有一个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()忽略它,我得到两个不同的坐标,用于在有和没有缩放的图像上单击相同的确切位置。
有人可以指导我吗?