У меня здесь довольно большая проблема. Я использую MVVM в своем приложении для рисования (Caliburn.Micro), и я не могу найти разумный способ сделать его рисованием фигур с предварительным просмотром в реальном времени.Лучший способ обновить значения фигур в WPF
Чертежный холст состоит из холста, который получает входные данные и подает данные в модель, и сетку, содержащую множество холстов, по одному для каждого слоя. Модель генерирует события (я буду использовать линии в качестве примера):
- События для создания линии - это создает простой объект строки со свойствами для начальной точки, конечной точки, цвета, толщины и автоматически сгенерированного ID. Событие имеет линию и слой, в который она была добавлена.
- На мыши перемещается конечная точка объекта линии, созданная в 1. обновляется, и новое событие запускается с обновленной формой и ее слоем в качестве параметра.
- На мыши вверх 2. также бывает.
Теперь в ViewModel, который регистрирует эти события, я просто добавить, чтобы исправить холст эквивалентной формы WPF (в данном случае System.Windows.Shapes.Line) и установить параметры при добавлении формы. Но я не могу прийти ни к какому идее, которое было бы надежно обновлять параметры формы при перемещении мыши, чтобы показать предварительный просмотр вытянутой фигуры в реальном времени.
Я пробовал использовать свойства зависимостей, но он не работал и, казалось, был излишним (из-за количества фигур, которые будут на всех этих холстах). Я также пытался расширить линию, но это невозможно, потому что класс запечатан. Мне также необходимо взаимодействовать с фигурами, которые нарисованы (например, изменение размера, вращение).
Эта библиотека выглядит очень красиво. Я полагаю, что перемещение/поворот/изменение размера фигур будет чем-то, что мне нужно реализовать, как в Java2D? –
Существует ветка, которая изменяет размер и поворачивает методы. Я никогда их не использовал, но стоит посмотреть. – mdm20
После некоторого тестирования я могу сказать: это безумно быстро по сравнению с чистым WPF, и это очень просто. Я нашел поворот и изменение размера для всего изображения, но это не большая проблема, чтобы реализовать его по фигуре. Большое спасибо за намек на эту библиотеку, это очень помогло! –