Управление лупой UWP (инструмент), который следует за курсором - PullRequest
0 голосов
/ 21 сентября 2018

Я сейчас работаю над заданием, и мне было предложено создать приложение для выбора области изображения с возможностью увеличения части изображения вокруг курсора.

Прямо сейчас я застрял на части лупы.В WPF есть элемент управления лупой, но как насчет UWP?У кого-нибудь был опыт создания лупы в UWP?

Пока я нашел это, но у UWP есть разные API: http://csharphelper.com/blog/2015/06/zoom-and-crop-a-picture-in-c/

Моя логика такова: 1. Нарисуйте круг вокруг курсора и перерисовывайте его каждый раз, когда курсор перемещается,2. Сделайте скриншот (визуализацию) указанной области вокруг него 3. Увеличьте область 4. Заполните круг увеличенным изображением (Растровое изображение)

Любые советы или предложения будут высоко оценены.Спасибо

1 Ответ

0 голосов
/ 26 сентября 2018
  1. Нарисуйте круг вокруг курсора и повторяйте его каждый раз, когда курсор перемещается.

Вы можете зарегистрировать событие PointerMoved для вашей панели (например, Canvas) и получить текущий указатель, используя следующий метод:

private void Canvas_PointerMoved(object sender, PointerRoutedEventArgs e)
{
    var pointer = e.GetCurrentPoint(sender as UIElement);
}

И затем,Вы можете добавить Ellipse к нему и установить его положение с помощью текущего указателя.

Сделайте снимок экрана (визуализируйте) указанную область вокруг него

Вы можете использовать RenderTargetBitmap API классов для визуализации определенной области.

Увеличьте значение

Вы можете изменить размер карты рендеринга цели.Проверьте эту тему Как изменить размер RenderTargetBitmap .

Заполните круг увеличенным изображением (Растровое изображение)

После того, как вы получите окончательное rendertargetbitmap, вы можете использовать его для создания ImageBrush , тогда вы можетеукажите этот ImageBrush для свойства Fill эллипса следующим образом:

ellipse.Fill = new ImageBrush() { ImageSource = renderTargetBitmap};
...