Установить смещение изображения для ImageBrush? - PullRequest
2 голосов
/ 27 января 2012

У меня в памяти большое изображение, которое я конвертирую в System.Windows.Media.ImageBrush и использую его как Fill для System.Windows.Shapes.Rectangle. Вы можете перемещать этот прямоугольник с помощью курсора.

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

Как я могу это сделать?

Я вижу ImageBrush.Viewport , но это, похоже, не означает одно и то же.


Я открыт для альтернативных решений, в которых не используется прямоугольник, таких как рисование непосредственно на холсте или что-то в этом роде, но AFAIK WPF не позволяет напрямую обращаться к пиксельным данным (по крайней мере, нелегко).

1 Ответ

2 голосов
/ 27 января 2012

Для этого вам нужно создать собственный пользовательский элемент управления прямоугольником, чтобы позволить пользователю создавать / изменять размер прямоугольника. Затем я бы создал CroppedBitmap изображения в прямоугольной части
Обрезанное растровое изображение MSDN
Пример Stackoverflow

Редактировать

Нет, нет, нет @Mark, Вы не превращаете CroppedBitmap в UserControl. Вы создаете USerControl, который отображает CroppedBitmap. По сути, вы создаете UserControl со следующими DependencyProperties

  1. Изображение
  2. Ширина обрезанной части
  3. Высота обрезанной части
  4. Слева от обрезанной части
  5. Верх обрезанной части

Затем, как только любое из этих свойств, ваш обратный вызов DP выполнит кадрирование RenderTargetBitmap нового региона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...