WPF C # - Неверная координата положения мыши - PullRequest
0 голосов
/ 23 сентября 2019

Я хотел бы нарисовать выделение, нарисовав прямоугольник на изображении, но кажется, что выделение отключено с огромным запасом.Мой кодили imgDynamic, но он все еще с огромным отрывом.Есть ли обходной путь для этого?Мне жаль, если мой код очень грязный, так как я все еще пытаюсь узнать о нем больше.

1 Ответ

0 голосов
/ 23 сентября 2019

Чтобы нарисовать прямоугольник выделения поверх изображения, вы могли бы просто иметь элемент Path с RectangleGeometry поверх изображения, например:

<Canvas>
    <Image Source="C:\Users\Public\Pictures\Sample Pictures\Koala.jpg"
           MouseLeftButtonDown="ImageMouseLeftButtonDown"
           MouseLeftButtonUp="ImageMouseLeftButtonUp"
           MouseMove="ImageMouseMove"/>

    <Path x:Name="selectionPath" Stroke="Magenta" StrokeThickness="2"/>
</Canvas>

С этими обработчиками событий:

private Point mousePos;

private void ImageMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    var image = (Image)sender;

    image.CaptureMouse();
    mousePos = e.GetPosition(image);
    selectionPath.Data = new RectangleGeometry(new Rect(mousePos, mousePos));
}

private void ImageMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    var image = (Image)sender;

    image.ReleaseMouseCapture();
    selectionPath.Data = null;
}

private void ImageMouseMove(object sender, MouseEventArgs e)
{
    var rect = selectionPath.Data as RectangleGeometry;

    if (rect != null)
    {
        var image = (Image)sender;

        rect.Rect = new Rect(mousePos, e.GetPosition(image));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...