Библиотека .NET для рисования линий без препятствий - PullRequest
4 голосов
/ 26 ноября 2008

Для чего-то я создал дизайнер стилей потока операций / блок-схемы. В настоящее время он использует относительно простые линии кривой Безье для соединения различных конечных точек «блоков» в рабочем процессе.

Однако я бы хотел что-то более интуитивное для пользователя. Я хочу, чтобы линии избегали таких препятствий, как другие блоки (прямоугольники) и, возможно, другие линии.

Я предпочитаю сплайны Безье, а не полилинии, потому что они красивее и, кажется, лучше вписываются в дизайнера в целом. Но я готов пойти на компромисс, если их гораздо труднее достичь.

Я знаю, что за этим стоит целый груз науки. Я изучал такие вещи, как Graphviz, Microsoft GLEE и их коммерческая библиотека AGL (автоматическая разметка графиков).

GLEE, кажется, едва ли достоин производства. И их коммерческая альтернатива, ну, коммерческая альтернатива ... это довольно дорого.

Graphviz, похоже, никак не был портирован на .NET.

Я видел реализацию ломаной линии, используемую Windows Workflow Foundation для ее «конструктора свободной формы». И это работает, просто, но на самом деле это не внешний вид производственного класса.

Я удивлен, что нет библиотеки plug-n-play .NET для такого типа вещей? Что-то вроде:

Point [] RoutePolyline (Начало точки, Конец точки, Прямоугольник [] rectObstacles, Point [] lineObstacles);

Ответы [ 3 ]

1 голос
/ 26 ноября 2008

Diagram.NET - это бесплатная библиотека диаграмм с открытым исходным кодом на C #. Он давно не обновлялся, но, безусловно, стоит посмотреть - там может быть что-то, что вы сможете использовать повторно.

http://www.dalssoft.com/diagram/

1 голос
/ 27 ноября 2008

Вы ограничены только управляемым кодом?

У меня не было этого ограничения и прошлого, и я эффективно интегрировал GraphViz с .Net. Мы назвали внешний процесс, содержащий изначально скомпилированную «точку», и проанализировали результат в объектной модели .Net. Он работал отлично и был достаточно быстрым для наших нужд.

Я уверен, что с C ++ / CLI сегодня вы могли бы работать лучше и проще.

1 голос
/ 26 ноября 2008

Я не пробовал (хотя я счастливый покупатель их Gantt продукта), но у ILOG есть похожий инструмент здесь .

К Цитата :

Диаграмма ILOG для алгоритмов .NET поделиться общими целями, такими как:

  • Минимизация количества перекрытий узлы
  • Минимизация количества ссылок пересечение
  • Минимизация общей площади чертежа
  • Минимизация числа изгибов (на ортогональных чертежах)
  • Максимизация наименьшего образованного угла по последовательным ссылкам на инциденты
  • Максимизация отображения симметрии
  • Поддержка инкрементной разметки, частичная верстка, подграфы, межграфические ссылки и вложенные макеты

Возможно, стоит посмотреть, по крайней мере.

...