Отображение графов в л/р №1

Post date: Mar 2, 2011 4:22:40 PM

При отображении графов захочет реализовать какой-то один из распространенных алгоритмов. Ниже даны ссылки на некоторые из них:

[http://conexp.sourceforge.net/DrawingLineDiagrams-presentation.pdf]

[http://alenacpp.blogspot.com/2006/02/blog-post_10.html]

[http://www.cs.brown.edu/~rt/papers/gd-tutorial/gd-constraints.pdf]

НО! Если хорошо подумать, то незачем изобретать велосипед! Очевидно, что задача рисования графа далеко не новая, поэтому существует множество библиотек [http://www.rsdn.ru/forum/gdn.common/3212268.flat.aspx], содержащих необходимую функциональность. В качестве одной из таких библиотек могу предложить использовать GLEE библиотеку [http://research.microsoft.com/en-us/downloads/f1303e46-965f-401a-87c3-34e1331d32c5/default.aspx]. Эту библиотеку можно использовать в некоммерческих целях: You may use, copy, reproduce, and distribute this Software for any non-commercial purpose, subject to the restrictions in this MSR-SSLA. Some purposes which can be non-commercial are teaching, academic research, public demonstrations and personal experimentation. You may also distribute this Software with books or other teaching materials, or publish the Software on websites, that are intended to teach the use of the Software for academic or other non-commercial purposes. Работать с этой библиотекой очень просто:

  1. Качаем дистрибутив и устанавливаем его.

  2. Подключаем новую визуальную компоненту в Toolbox студии:

    1. кликаем правой кнопкой мыши по полю Toolbox.

    2. в меню выбираем Choose Items...

    1. открываем вкладку .NET Components.

    2. нажимаем кнопку Browse.

    1. находим dll-ку Microsoft.GLEE.GraphViewerGDI.dll.

    2. нажимаем кнопку OK.

    3. в результате в Toolbox во вкладке General появится новая визуальная компонента GViewer.

  1. Выставляем в проекте ссылки на dll-ки библиотеки:

    1. кликаем правой кнопкой по проекту, выбираем из меню вкладку References.

    1. в дереве справа выбираем вкладку Common Properties->Frameworks and References.

    2. нажимаем кнопку Add New Reference...

    1. выбираем вкладку Browse.

    2. в поле Look in идем по тому пути, где лежит установленная библиотека (по умолчанию это путь следующего вида c:\Program Files\Microsoft Research\GLEE\bin)

    3. выбираем dll-ку.

    4. 3-6 повторяем для всех dll файлов библиотеки.

  1. Бросаем компоненту на форму, например, дадим ей имя gViewer.

  2. В исходном файле формы:

    1. добавляем пространство имен (using namespace Microsoft::Glee::Drawing;).

    2. чтобы работать с графом, достаточно использовать 2 метода AddNode (добавление узла) и AddEdge (добавление ребра). Ниже показан пример использования.

Graph ^g = gcnew Graph("graph");

g->AddNode("1"); // добавление узла с идентификатором 1

g->AddNode("2"); // добавление узла с идентификатором 2

g->AddNode("3"); // добавление узла с идентификатором 3

g->AddNode("4"); // добавление узла с идентификатором 4

g->AddEdge("1", "9", "2"); // добавление ребра от узла 1 к узлу 2 с меткой 9

g->AddEdge("2", "-7", "4");// добавление ребра от узла 2 к узлу 4 с меткой -7

g->AddEdge("1", "2", "3"); // добавление ребра от узла 1 к узлу 3 с меткой 2

gViewer->Graph = g;