Додайте свій проект безкоштовно і почніть отримувати пропозиції від фрілансерів-виконавців вже через хвилини після публікації!
200 ₴

C# приложение для рисования направленных графов

закрито модератором
C#


Нужно создать приложение, которое позволяет пользователю рисовать направленный граф на C#. Обратите внимание - любой направленный граф, а не только дерево или интеллект карту!

Для дальнейшего описания определимся с терминологией. Узлы (или ноды) - вершины графа. Связи - ребра графа.

Узлам должна быть возможность задавать размер, иконки, текст. Во внутреннем представлении узла должно присутствовать текстовое поле Description. Желательно сделать нод такой формы http://prntscr.com/dk7xfc  . Высота у него всегда одинаковая, а длина может меняться в  зависимости от длины текста в нем. Из вышесказанного также делаем вывод - текст должен всегда находиться в ноде

Для связей нужно иметь возможность задать текст (который лежит на ребре) и оформление. На конце связи (то есть на узле, куда приходит связь) должна быть стрелочка http://prnt.sc/dk7yea 


Требования к внешнему виду: жестких нету, но по возможности посимпатичнее) Чем ближе Mindjet MindManager , тем лучше) 

Должно поддерживаться:

  1. при нажатии на нод он должен просто выделяться (для выделеного пусть будет окаемка какая то специфическая http://prntscr.com/dkuyg9 )

  2. Перемещение узлов: зажали мышку захватили и несем куда хотим. Когда завершили движение и отпустили мышку - все передвижение закончилось.

  3. При клике левой кнопкой мышки на свободном участке экрана - создается нод.

  4. при наведении мышки на нод у него на каждой из сторон появляются кружочки (по аналогии как здесь плюсики http://prntscr.com/dkuxk0  ). Для создания связи между двумя нодами пользователь должен сделать mousedown на одном из кружочков исходного нода и дотянуть мышку до другого нода. Таким образом у нода 4 кружочка и от любого из них может отходить к другим нодам любое количество связей. Связи на других нодах заканчиваются в произвольной локации.

  5. Отображение поля Description нода. Создаем панель справа (она ВНЕ поля для рисования нодов). При выделении конкретного нода на панели отображается поле RichTextBox, в котором выводится Description этого нода. Пользователь может его редактировать. При снятии выделения новое значение (отредактированное) автоматически сохраняет как актуальный Description http://prntscr.com/dkuz6m


Будущее:

  1. Автомасштабирование расположения новых вершин с окружения (других вершин), среди которых они созданы.

  2. Возможность делать дуговые ребра  http://prntscr.com/dml2hu

Нарисованный граф должен сериализоваться в xml (и соответственно десериализоваться). 


Приложение делаем на C# .NET4 под VS 2012. На выходе - проект с исходниками. Можно юзать любую готовую бесплатную либу. Обсудим варианты готовых решений или технологий на базе которых реализовать. Можно, например, на WPF. После реализации отдельно нужно будет создать документацию.





  1. 1 день200 ₴Переможець
    Маркіян Галянт
     181 

    Очень интересная задача.
    Имею большой опыт в разработке Wpf /Uwp MVVM
    Работает уже 5 лет как full stack .net developer
    Есть очень интересные идеи с реализацией этого проекта
    До нового года занят а после я свободен

    Україна Львів | 22 грудня 2016 |
  2. 3 дні1000 ₴
    Ivan Shovag
     470   16   0

    Здравствуйте,
    Готов выполнить Ваш проект. C# WinForms.

    Україна Київ | 23 грудня 2016 |
  3. 7 днів200 ₴
    Діма Савчук
     128 

    Есть опыт работы с графикой OpenCv и другими библиотеками, делал подобный проект. Готовый обсудить, время есть. WPF будет лучше в вашем случае.

    Україна Україна | 25 грудня 2016 |
  4. 7 днів860 ₴
    Борис Гарин
     79 

    Могу выполнить за неделю и 860 гривен.

    Росія Пенза | 25 грудня 2016 |

Замовник
Артем Фролов
Україна Дніпро  8   0
Проект опублікований
22 грудня 2016
106 переглядів
Мітки
Качество описания проекта
0
0
100%