Как визуально нарисовать граф?
От: Psihadelic  
Дата: 29.03.11 14:30
Оценка:
Здравствуйте!

Пожалуйста помогите, сам мучаюсь уже очень долго, ничего не получается!
Изначально задача такова: построить граф, найти минимальное остовое дерево. Задача решена, но видно это только в программе, т.е. визуализации никакой, все делается через структуры данных и только при отладке можно увидеть что алгоритм действительно работает.

Так вот мне нужно научится рисовать кружочки и соединять их линиями. Ещё было бы очень здорово, если кружочки можно было бы самостоятельно двигать по экрану.
Ну и после всего этого мне нужно будет кружочки привязать с своему графу, но это я думаю у меня получится.

Пожалуйста скажите какие классы, какие функции использовать для рисования графа?
Юзал класс Ellips и Line, но как провести линию от одного кружка (эллипса) к другому я так и не понял. Ну а как двигать нарисованные круги вообще понять не могу.

Спасибо большое за помощь!

29.03.11 23:44: Перенесено модератором из '.NET' — TK
Re: Отрисовка графа
От: Qbit86 Кипр
Дата: 29.03.11 14:32
Оценка:
Здравствуйте, Psihadelic, Вы писали:

P>Как визуально нарисовать граф?


http://www.rsdn.ru/forum/alg/3398793.aspx
Автор: Qbit86
Дата: 21.05.09
Глаза у меня добрые, но рубашка — смирительная!
Re: Как визуально нарисовать граф?
От: Mountaineer  
Дата: 29.03.11 14:35
Оценка:
Здравствуйте, Psihadelic, Вы писали:

P>Здравствуйте!


P>Пожалуйста помогите, сам мучаюсь уже очень долго, ничего не получается!

P>Изначально задача такова: построить граф, найти минимальное остовое дерево. Задача решена, но видно это только в программе, т.е. визуализации никакой, все делается через структуры данных и только при отладке можно увидеть что алгоритм действительно работает.

P>Так вот мне нужно научится рисовать кружочки и соединять их линиями. Ещё было бы очень здорово, если кружочки можно было бы самостоятельно двигать по экрану.

P>Ну и после всего этого мне нужно будет кружочки привязать с своему графу, но это я думаю у меня получится.

P>Пожалуйста скажите какие классы, какие функции использовать для рисования графа?

P>Юзал класс Ellips и Line, но как провести линию от одного кружка (эллипса) к другому я так и не понял. Ну а как двигать нарисованные круги вообще понять не могу.

P>Спасибо большое за помощь!


Самый простой вариант — метод пружин.
В блоге alenacpp есть статьи об разных алгоритмах визуализации графов.
Re[2]: Как визуально нарисовать граф?
От: Psihadelic  
Дата: 29.03.11 14:49
Оценка:
Нет-нет-нет, ребята.
Пожалуйста не нужно меня носом тыкать на посты и статьи по алгоритмам на графах или ещё чего.
В блоге том что посоветовали действительно много написано (уже бывал там, когда искал решения своей проблемы), но там говорится о построении графа, а мне это не нужно, у меня граф программно уже есть, нужно только это визуализировать.

Прошу просто объяснить как рисовать круги и соединять их линиями.
Re[3]: Как визуально нарисовать граф?
От: Closer  
Дата: 29.03.11 15:23
Оценка: 15 (2)
Здравствуйте, Psihadelic, Вы писали:

[skipped]

P>Прошу просто объяснить как рисовать круги и соединять их линиями.


Самый простой способ это использовать уже готовую библиотеку для рисования графов.

Вот например одна из них с которой приходилось работать: http://code.google.com/p/nshape/
Её плюсы в том что она имеет открытые исходники и можно в случае проблем посмотреть как она работает.
Минусы в том что она под GPL, плюс интерфейс который она предоставляет для работы иногда выглядит и работает довольно странно.

Но думаю её возможностей будет достаточно для твоей задачи.
Мы были здесь. Но пора идти дальше. (с) Дуглас Коупленд, Рабы "Микрософт"
Re[4]: Как визуально нарисовать граф?
От: Psihadelic  
Дата: 29.03.11 16:55
Оценка:
Здравствуйте, Closer, Вы писали:

C>Здравствуйте, Psihadelic, Вы писали:


C>[skipped]


P>>Прошу просто объяснить как рисовать круги и соединять их линиями.


C>Самый простой способ это использовать уже готовую библиотеку для рисования графов.


C>Вот например одна из них с которой приходилось работать: http://code.google.com/p/nshape/

C>Её плюсы в том что она имеет открытые исходники и можно в случае проблем посмотреть как она работает.
C>Минусы в том что она под GPL, плюс интерфейс который она предоставляет для работы иногда выглядит и работает довольно странно.

C>Но думаю её возможностей будет достаточно для твоей задачи.


Я там ничего не понял, я английский не знаю. Да и разбираться в коде без документации я не умею, я студент...
Re: Как визуально нарисовать граф?
От: Andrey Rubayko  
Дата: 29.03.11 18:29
Оценка:
Здравствуйте, Psihadelic, Вы писали:

P>Здравствуйте!


P>Пожалуйста помогите, сам мучаюсь уже очень долго, ничего не получается!

P>Изначально задача такова: построить граф, найти минимальное остовое дерево. Задача решена, но видно это только в программе, т.е. визуализации никакой, все делается через структуры данных и только при отладке можно увидеть что алгоритм действительно работает.

P>Так вот мне нужно научится рисовать кружочки и соединять их линиями. Ещё было бы очень здорово, если кружочки можно было бы самостоятельно двигать по экрану.

P>Ну и после всего этого мне нужно будет кружочки привязать с своему графу, но это я думаю у меня получится.

P>Пожалуйста скажите какие классы, какие функции использовать для рисования графа?

P>Юзал класс Ellips и Line, но как провести линию от одного кружка (эллипса) к другому я так и не понял. Ну а как двигать нарисованные круги вообще понять не могу.

P>Спасибо большое за помощь!


Посмотрите GDI+. Там есть все что нужно. Когда то сам похожую вещь делал, жаль исходник не сохранился. Если вкратце, то берется простая панель WinForms. У вас в какой-либо структуре данных хранятся уже вычисленные координаты вершин графа. В событии Paint ведется отрисовка данной структуры. Что бы не было мерцаний — элементарно включается двойная буфферизация даной панели. Особое внимание советую уделить разнице между абсолютными и относительными координатами. А также всякого рода трансформам. А ля TranslateTransform.
Re: Как визуально нарисовать граф?
От: Sharov Россия  
Дата: 30.03.11 08:48
Оценка:
Здравствуйте, Psihadelic, Вы писали:

http://quickgraph.codeplex.com/
http://research.microsoft.com/en-us/downloads/f1303e46-965f-401a-87c3-34e1331d32c5/default.aspx
Кодом людям нужно помогать!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.