Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2013, 21:06   #1
genaveng
 
Аватар для genaveng
 
Регистрация: 03.01.2013
Сообщений: 9
Вопрос Создание графического интерфейса drag'n'drop

Добрый вечер всем.
Подскажите как создать графический интерфейс как в MS Visio или GNS3? То есть можно было бы вытаскивать элементы на поле, соединять их линиями связи. При перетаскивании элемента что бы линии связи перемещались вместе с этим элементом и так далее.



Делал схожий интерфейс простым рисованием картинки. При клике на картинке перебором искал элемент, на который было сделать нажатие. Есть ли более правильные методы?

Спасибо за подсказку.
genaveng вне форума Ответить с цитированием
Старый 06.07.2013, 21:16   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Недавно делал демонстрационный проект на сильверайте, который собственно то же самое и делает
ссылка на видео
Драг-н-дроп реализован обработкой событий MouseLeftButtonDown/Up/MouseMove.
Элемент, на котором произошло нажатие/отпускание кнопки мыши, получал из MouseEventArgs.OriginalSource.
Структура проекта упрощенно выглядит так:
Изображения
Тип файла: jpg СБП.jpg (35.3 Кб, 178 просмотров)
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 06.07.2013, 21:36   #3
genaveng
 
Аватар для genaveng
 
Регистрация: 03.01.2013
Сообщений: 9
По умолчанию

Спасибо за ответ. А как ты сохранял объекты, которые нужно отображать? Как с ними правильно работать?

У меня, например, для каждого типа объекта был свой список. При добавлении его на поле, добавлялся экземпляр в список и в соответствии с координатами клика мыши он рисовался на битмап (делал на WinForms). Если клик делался на рисунок, то по координатам клика я проверял все объекты в списке. Если координаты совпадали - то его выделял.
Можно ли как-то упростить такую работу?
genaveng вне форума Ответить с цитированием
Старый 06.07.2013, 21:49   #4
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
для каждого типа объекта был свой список
У меня список был один, в котором все объекты реализовывали один интерфейс (см. вложение)

Цитата:
Элемент, на котором произошло нажатие/отпускание кнопки мыши, получал из MouseEventArgs.OriginalSource
Подписывал создаваемые объекты на необходимые события. На winforms при событии onClick скорее всего тоже приходит sender в каком-то виде.

Цитата:
А как ты сохранял объекты, которые нужно отображать?
Для хранения объекты сериализовал в XML.

Цитата:
он рисовался на битмап .....
Цитата:
Можно ли как-то упростить такую работу?
Да. Вместо рисования картинок на битмапе - создавайте новые объекты (например, Image) и размещайте их на каком-то другом объекте, который будет являться "холстом" для рисования схемы. А сами Image подписывайте на OnClick. И будете в обработчике клика получать сам объект, по которому кликнули.
Вложения
Тип файла: txt IDiagramShape.txt (2.5 Кб, 141 просмотров)
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 06.07.2013, 21:57   #5
genaveng
 
Аватар для genaveng
 
Регистрация: 03.01.2013
Сообщений: 9
По умолчанию

Благодарю за ответ. Буду размышлять над реализацией

Если есть еще какие-то варианты решения, буду признателен за помощь.
genaveng вне форума Ответить с цитированием
Старый 06.07.2013, 21:58   #6
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Одно могу сказать точно: думайте в сторону "одна фигура => отдельный объект"
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инструменты изменения графического интерфейса контролов Smogg Win Api 6 24.12.2012 07:42
Какую библиотеку графического интерфейса выбрать? demigod82 Visual C++ 3 22.04.2012 12:24
Переработка нестандартного графического интерфейса программы (Delphi) Developer_ Фриланс 0 03.02.2012 22:01
Тормоза при отработке графического интерфейса sergey113 Помощь студентам 10 23.03.2011 12:51
Написание графического интерфейса zhuravlov Фриланс 3 04.01.2011 21:54