Пожалуйста помогите, сам мучаюсь уже очень долго, ничего не получается!
Изначально задача такова: построить граф, найти минимальное остовое дерево. Задача решена, но видно это только в программе, т.е. визуализации никакой, все делается через структуры данных и только при отладке можно увидеть что алгоритм действительно работает.
Так вот мне нужно научится рисовать кружочки и соединять их линиями. Ещё было бы очень здорово, если кружочки можно было бы самостоятельно двигать по экрану.
Ну и после всего этого мне нужно будет кружочки привязать с своему графу, но это я думаю у меня получится.
Пожалуйста скажите какие классы, какие функции использовать для рисования графа?
Юзал класс Ellips и Line, но как провести линию от одного кружка (эллипса) к другому я так и не понял. Ну а как двигать нарисованные круги вообще понять не могу.
Спасибо большое за помощь!
29.03.11 23:44: Перенесено модератором из '.NET' — TK
Здравствуйте, Psihadelic, Вы писали:
P>Здравствуйте!
P>Пожалуйста помогите, сам мучаюсь уже очень долго, ничего не получается! P>Изначально задача такова: построить граф, найти минимальное остовое дерево. Задача решена, но видно это только в программе, т.е. визуализации никакой, все делается через структуры данных и только при отладке можно увидеть что алгоритм действительно работает.
P>Так вот мне нужно научится рисовать кружочки и соединять их линиями. Ещё было бы очень здорово, если кружочки можно было бы самостоятельно двигать по экрану. P>Ну и после всего этого мне нужно будет кружочки привязать с своему графу, но это я думаю у меня получится.
P>Пожалуйста скажите какие классы, какие функции использовать для рисования графа? P>Юзал класс Ellips и Line, но как провести линию от одного кружка (эллипса) к другому я так и не понял. Ну а как двигать нарисованные круги вообще понять не могу.
P>Спасибо большое за помощь!
Самый простой вариант — метод пружин.
В блоге alenacpp есть статьи об разных алгоритмах визуализации графов.
Нет-нет-нет, ребята.
Пожалуйста не нужно меня носом тыкать на посты и статьи по алгоритмам на графах или ещё чего.
В блоге том что посоветовали действительно много написано (уже бывал там, когда искал решения своей проблемы), но там говорится о построении графа, а мне это не нужно, у меня граф программно уже есть, нужно только это визуализировать.
Прошу просто объяснить как рисовать круги и соединять их линиями.
[skipped]
P>Прошу просто объяснить как рисовать круги и соединять их линиями.
Самый простой способ это использовать уже готовую библиотеку для рисования графов.
Вот например одна из них с которой приходилось работать: http://code.google.com/p/nshape/
Её плюсы в том что она имеет открытые исходники и можно в случае проблем посмотреть как она работает.
Минусы в том что она под GPL, плюс интерфейс который она предоставляет для работы иногда выглядит и работает довольно странно.
Но думаю её возможностей будет достаточно для твоей задачи.
Мы были здесь. Но пора идти дальше. (с) Дуглас Коупленд, Рабы "Микрософт"
Здравствуйте, Closer, Вы писали:
C>Здравствуйте, Psihadelic, Вы писали:
C>[skipped]
P>>Прошу просто объяснить как рисовать круги и соединять их линиями.
C>Самый простой способ это использовать уже готовую библиотеку для рисования графов.
C>Вот например одна из них с которой приходилось работать: http://code.google.com/p/nshape/ C>Её плюсы в том что она имеет открытые исходники и можно в случае проблем посмотреть как она работает. C>Минусы в том что она под GPL, плюс интерфейс который она предоставляет для работы иногда выглядит и работает довольно странно.
C>Но думаю её возможностей будет достаточно для твоей задачи.
Я там ничего не понял, я английский не знаю. Да и разбираться в коде без документации я не умею, я студент...
Здравствуйте, Psihadelic, Вы писали:
P>Здравствуйте!
P>Пожалуйста помогите, сам мучаюсь уже очень долго, ничего не получается! P>Изначально задача такова: построить граф, найти минимальное остовое дерево. Задача решена, но видно это только в программе, т.е. визуализации никакой, все делается через структуры данных и только при отладке можно увидеть что алгоритм действительно работает.
P>Так вот мне нужно научится рисовать кружочки и соединять их линиями. Ещё было бы очень здорово, если кружочки можно было бы самостоятельно двигать по экрану. P>Ну и после всего этого мне нужно будет кружочки привязать с своему графу, но это я думаю у меня получится.
P>Пожалуйста скажите какие классы, какие функции использовать для рисования графа? P>Юзал класс Ellips и Line, но как провести линию от одного кружка (эллипса) к другому я так и не понял. Ну а как двигать нарисованные круги вообще понять не могу.
P>Спасибо большое за помощь!
Посмотрите GDI+. Там есть все что нужно. Когда то сам похожую вещь делал, жаль исходник не сохранился. Если вкратце, то берется простая панель WinForms. У вас в какой-либо структуре данных хранятся уже вычисленные координаты вершин графа. В событии Paint ведется отрисовка данной структуры. Что бы не было мерцаний — элементарно включается двойная буфферизация даной панели. Особое внимание советую уделить разнице между абсолютными и относительными координатами. А также всякого рода трансформам. А ля TranslateTransform.