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

Кто-нибудь может направить меня в этом?

0 ответов

Другие вопросы по тегам