Неправильные координаты WPF e.GetPosition() при применении масштабирования с помощью 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)
(это MouseButtonEventArg)
, Я буду правильно получать координаты пикселей изображения, только если я не применяю какие-либо LayoutTransform
к моему образу. Однако некоторые изображения либо слишком велики, либо слишком малы по размеру, что делает выбор более трудным, чем должно быть.
Проблема здесь заключается в том, если я применяю масштабирование с помощью LayoutTransform
к изображению e.GetPosition() игнорирует его, и я получаю две разные координаты для нажатия на одно и то же точное местоположение на изображении с масштабированием и без него.
Кто-нибудь может направить меня в этом?