Визуализация графов
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Необходимо визуализировать (на форме) граф (произвольный) . Каждая вершина графа может представлять собой еще один произвольгый граф. При щелчке на вершину графа можно перейти к просмотру этого нового графа. При необходимости пользователь может "развернуть" вложенный в вершину граф и отобразить его так сказать на родительском графе (и снова свернуть).
Подскажите, каким готовым (бесплатным) контролом воспользоваться для реализации этой задачи на C# в VS2008? Или может есть какие другие попроще пути решения??
Подскажите, каким готовым (бесплатным) контролом воспользоваться для реализации этой задачи на C# в VS2008? Или может есть какие другие попроще пути решения??
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Боюсь, что стандартных контролов не оказалось бы, даже если бы ты просто хотел отобразить граф. Если же тебе ещё нужен и "граф в графе", то будь уверен - стандартных готовых решений нет. Только самостоятельная отрисовка. Не столь подобная задача распространена (скажу более, я подобную постановку вообще первый раз слышу), чтобы уже имелся готовый компонент.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Вот поэтому мне и предстоит это реализовать в бакалаврской работе =(((
Кто может подскажет, посредством чего лучше это рисовать?
Кто может подскажет, посредством чего лучше это рисовать?
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Нарисовать кружочки, соединенные линиями это не проблема.
А вот как эти кружочки расположить, чтобы иметь удобное для восприятия минимизированное пересечение рёбер. Вот это и есть главная проблема.
Самая простая и весьма действенная идея - это расположить вершины графа по кругу.

Самая простая и весьма действенная идея - это расположить вершины графа по кругу.
Naeel Maqsudov, допустим есть алгоритм, как красиво расположить вершины. С помощью чего мне будет (начинающему) быстро освоить и нарисовать все эти кружочки и линии?? ;-)
А тебе нужен именно С#?
Обычный Visual C++ не подойдёт для твоей задачи?
Проблема скорее не в отрисовке самого графа. Расположить окружности по заданным координатам и провести линии между ними - это довольно легко сделать. Здесь важно продумать саму объектную модель, которая будет описывать массив с данными и связи между ними, динамическую вставку и удаление элементов. А так же реакцию на события мыши и клавиатуры.
Обычный Visual C++ не подойдёт для твоей задачи?
Проблема скорее не в отрисовке самого графа. Расположить окружности по заданным координатам и провести линии между ними - это довольно легко сделать. Здесь важно продумать саму объектную модель, которая будет описывать массив с данными и связи между ними, динамическую вставку и удаление элементов. А так же реакцию на события мыши и клавиатуры.
WinMain, ты считаешь, что лучше на C++ писать? Опять же - с помощью чего?? ;-)
Писать лучше на том языке, который ты сам хорошо знаешь. С++ в данном случае ничем не лучше. Но, поскольку С++ намного старше, чем C#, то тебе легче будет найти уже готовые реализации граф-контейнеров и граф-рендереров именно на С++.
Вот к примеру одна из таких реализаций на С++...
http://www.ncbi.nlm.nih.gov/IEB/ToolBox ... ainer.html
Вот к примеру одна из таких реализаций на С++...
http://www.ncbi.nlm.nih.gov/IEB/ToolBox ... ainer.html