Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > WPF, UWP, WinRT, XAML
Регистрация

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


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

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



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

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

icq: З7ЧЗЗ89Ч5
По умолчанию

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

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

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

icq: З7ЧЗЗ89Ч5
По умолчанию

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

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

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

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

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

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

icq: З7ЧЗЗ89Ч5
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инструменты изменения графического интерфейса контролов 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 13:51
Написание графического интерфейса zhuravlov Фриланс 3 04.01.2011 22:54


23:32.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru