Бесплатная библиотека С++ для рисования блок-схем или Directed graph?
Я хочу встроить холст чертежа диаграммы в моей программе.
Пользователи могли бы:
- нарисовать "узлы" (узлы прямоугольника достаточно) и "ребра" (предпочтительнее быть ортогональными) для подключения
"Узлы";
- использовать мышь для перетаскивания узлов для макета и изменения размера прямоугольника;
- выберите один или несколько узлов мышью для удаления, копирования, вставки и т.д.
- выберите один или несколько узлов мышью для редактирования предопределенных свойств (объем, температура, давление и т.д.) для них;
- изменить цвет (необязательно)
- сохранение/чтение данных в/из файлов.
После рисования программе нужно только получить логику соединения (в структуре данных, например Directed graph) и свойствах для дальнейших вычислений.
Есть ли бесплатная или открытая библиотека С++ для этого?
(Не требуется для кросс-платформенных, доступных в окнах.)
Ответы
Ответ 1
Недавно я искал это и наткнулся на несколько других вариантов вместе с Graphviz:
http://igraph.sourceforge.net/screenshots.html
http://networkx.lanl.gov/gallery.html
http://gephi.org/screenshots/
В итоге я использовал networkx. Я собираюсь сыграть с Gephi в ближайшее время, чтобы посмотреть, какие данные я могу загрузить в нее.
Ответ 2
Если вы согласны использовать Qt-код для графической части вещей, Qanava делает достойную работу. Для рассмотрения самих графиков (не графически) Boost Graph довольно приятно.
Ответ 3
Кажется, что у Dynagraph имеется графический интерфейс.
http://www.dynagraph.org/
Dynagraph для Windows является полным графическим приложением OLE, позволяющим вставлять графики в другие документы и вставлять документы в граф в виде узлов.
Ответ 4
Похоже, вам придется это сделать. Qt позволит вам делать все, что вам нужно.
Посмотрите на графический вид, который предлагает множество уже реализованных функций для управления вашим графиком.
Ответ 5
Возможно, это не так, как вам нужно, но если вам нужен быстрый и грязный способ сделать графический вывод из вашего кода, вы можете подключиться к gnuplot и отправить его командам. Если графики сложны, вы хотите что-то вроде Graphviz, но если они просто маленькие графики, то самая сложная часть - это объединение двух, и gnuplot делает это очень просто.