Работа с 2D-графикой в WPF

Всем привет
Каким образом можно осуществить работу с 2D графикой в WPF?
В случае работы с 3D есть такой контролл, как Viewport3D. В нем есть тег ModelVisual3D, к которому можно привязать нужную модель, построенную во ViewModel следующим образом: <ModelVisual3D Content="{Binding Model}" />
Есть ли подобный контролл для работы с 2D? Очень желательно с примерами. Если нет - буду очень благодарен за любые наводки на альтернативный способ реализации
Если быть максимально конкретным, передо мной стоит следующая задача:
Есть список объектов, каждый из которых имеет свое графическое представление. При выборе нового объекта оно (представление) отображается в окне. Так же должна быть возможность изменять размеры выбранного объекта с перерисовкой представления в ходе программы.


Ответы (1 шт):

Автор решения: AvtPhenix

Для работы с 2D графикой наиболее быстрый способ это использовать Canvas. Тут вы можете как просто добавлять примитивы как объекты (через Xaml или через ручное добавление в Children). Или так же переопределив метод OnRender можно выводить необходимые примитивы через DrawingContext.

 protected override void OnRender(DrawingContext dc)
 {
     dc.dc.DrawImage(myImageSource, new Rect(mySize));
     base.OnRender(dc);
 }

Так же можно использовать Direct2d (через WriteableBitmap/WriteableBitmapEx) или если у вас приложение на UWP то Win2D. Так же можете воспользоваться InkCanvas (который из коробки предоставляет возможность изменять изображения своих дочерних объектов).

Ну а в целом из вашего описания задачи не совсем понятно нужно ли вообще вам использовать ту или иную отрисовку или просто воспользоваться объектом Image и просто ресайзить его (пример если разместить его в Grid и добавить GridSplitter по горизонтали и вертикали).

→ Ссылка