Неправильные координаты WPF e.GetPosition () при применении масштабирования с помощью LayoutTransform - PullRequest
0 голосов
/ 05 мая 2018

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

Может кто-нибудь наставить меня в этом?

...