Вопрос

Есть ли способ рисовать / соответствовать простому четырехугольничному вырезу из изображения на стандартный аксис-выровненный прямоугольник для дисплея экрана. (Так что выключатель будет искажен, чтобы заполнить точки прямоугольника). Мне кажется, это должно быть возможно с образцом, но я не могу видеть это.

Это было полезно?

Решение

Да, но он варьируется от чрезвычайно легко в несколько сложном в зависимости от вашего четырехугольника.

Выровненный прямоугольник

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

Необходимый прямоугольник или другая параллелограмма

Если четырехугольник представляет собой произвольную параллелограмму (включая прямоугольники), вы можете использовать RenderTransform для сопоставления углов катрилатерала до границ прямоугольника и установить клиптацию = «истинно», так что только вырезные шоу.

<Decorator ClipToBounds="true">
  <Rectangle Fill="{StaticResource SourceImage}" RenderTransform="1 0 0 1 0 0" />
</Decorator>

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

Произвольный четырехугольник

Если четырехугольник не является параллелограммой, вам нужно использовать нефтеферное преобразование, которое недоступно в 2D-графике WPF. Однако он доступен в 3D-системе: вам нужно будет создать четыре вложенных объекта:

  • Meshgeometryry3D для определения формы прямоугольника внутри
  • GeometryModel3D для определения материала (ваша картинка) внутри
  • ModelVisual3D для определения вашего преобразования внутри
  • Viewport3Dvisual Чтобы определить вашу камеру и просмотр.

Блог Чарльза Петцольда Имеет расчеты для трехмерного решения.

Другие советы

Если вы хотите, вы хотите показать обрезанное изображение, вы можете использовать CroppedBitmap.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top