UWP Лупа управления (инструмент), который следует за курсором

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

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

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

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

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

1 ответ

  1. Нарисуйте круг вокруг курсора и перерисуйте его каждый раз, когда курсор перемещается.

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

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

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

  1. Сделайте скриншот (визуализацию) указанной области вокруг него

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

  1. Увеличить

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

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

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

ellipse.Fill = new ImageBrush() { ImageSource = renderTargetBitmap};
Другие вопросы по тегам