У меня есть приложение 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 () его игнорирует, и я получаю две разные координаты для нажатия на одно и то же точное местоположение на изображении с масштабированием и без него.
Может кто-нибудь наставить меня в этом?