WPF изображения изображения
-
29-09-2019 - |
Вопрос
Есть ли способ рисовать / соответствовать простому четырехугольничному вырезу из изображения на стандартный аксис-выровненный прямоугольник для дисплея экрана. (Так что выключатель будет искажен, чтобы заполнить точки прямоугольника). Мне кажется, это должно быть возможно с образцом, но я не могу видеть это.
Решение
Да, но он варьируется от чрезвычайно легко в несколько сложном в зависимости от вашего четырехугольника.
Выровненный прямоугольник
Если четырехугольник представляет собой прямоугольник, выровненный к осям, вы можете использовать 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
.