![]() |
Модераторы: gambit, Kefir, Partizan |
![]() ![]() ![]() |
|
Anyone |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
Мне нужно создать 2D редактор, в котором можно добавлять различные объекты, которые соединяются линиями. При перемещении объектов линия должна изменять свое положение, так чтоб не терялось соединение. Тривиальна ли это задача для WPF? Планирую использовать класс Visual для их прорисовки.
|
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 9 Всего: 67 |
Anyone, думаю, что соединение двух объектов линией уж точно тривиально...а возможно на codeproject что-то такое уже есть...по крайней мере у меня чёткое ощущение, что я видел что-то такое там...
-------------------- СУВ, Partizan. |
|||
|
||||
Anyone |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
К сожалению, на codeproject ничего подобного я не нашел...
|
|||
|
||||
Anyone |
|
||||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
Да, действительно, задача тривиальная для WPF, более того производительность и функциональность намного выше чем графика с OpenGL.
Написал простейший редакор, который позволяет нарисовать объекты и манипулировать ими. Но у меня возникло ряд вопросов, буду очень благодарный за ответ. Для начала немного опишу реализацию, чтобы вопросы были понятными. Создал класс, производный от Canvas, в котором хранятся объекты:
В окне разместил этот контрол так:
Первый скроллбар - изменение масштаба, остальные - соответсвенно вертикальная и горизонтальная прокрутки. Масштаб изменяю так:
Перемещение с помощью скроллов:
А теперь, я надеюсь не сильно вас утомил, и задам свои вопросы: 1. Можно ли как то изменить z-порядок перемещаемых визуальных объектов, чтобы они были всегда сверху? 2. Может быть есть более правильная реализация изменение масштаба и прокрутки? 3. Как применить несколько видов трансформации, к примеру и TranslateTransform и ScaleTransform одновременно? 4. Возможно ли координаты одного объекта (родителя) привязать к координатам другого (детей) так, что при трансформации родителя, трансформация детей происходила автоматически? Это необходимо для того, чтобы можно было поверху объекта нарисовать элементы, которые по своему будут реагировать на события. Или может быть есть более удачное решение? 5. Как сделать невидимые объекты, которые будут реагировать на события? Добавить только в логическое дерево и не добавлять в визуальное? 6. Может быть правильнее было бы использовать VisualCollection вместо списка типа Visual? Спасибо за внимание. |
||||||||
|
|||||||||
Anyone |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
Нашел интересный примерчик.
Вопросы 1 и 3 отпадают, но появился еще один: 7. Появилась идея перемещать объекты посредством трансформации а не перерисовки объекта, является ли это хорошим решением для увеличения производительности? |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |