.NET库绘制路线避开障碍物

时间:2008-11-26 09:37:19

标签: c# gdi+ line spline

我为某些事情创建了工作流程/流程图样式设计器。目前,它使用相对简单的Bezier曲线来连接工作流程中“块”的各个端点。

但是我想为用户提供一些更直观的东西。我希望线条像其他块(矩形)一样避开障碍物,也可能是其他线条。

我更喜欢bezier花键而不是折线,因为它们更漂亮,似乎更适合设计师。但如果他们更难完成,我愿意妥协。

我知道这背后有一大堆科学。我研究了Graphviz,微软的GLEE和他们的商业AGL(自动图形布局)库。

GLEE似乎几乎没有生产价值。他们的商业替代品是商业替代品......它非常昂贵。

Graphviz似乎没有以任何方式移植到.NET。

我见过Windows Workflow Foundation为其“自由形式设计师”使用的折线实现。这是有效的,但它并不是真正的生产级外观。

我很惊讶没有一些用于此类事情的plug'n'play .NET库?类似的东西:

Point [] RoutePolyline(Point begin,Point end,Rectangle [] rectObstacles,Point [] lineObstacles);

3 个答案:

答案 0 :(得分:1)

我还没有尝试过(虽然我是他们Gantt产品的客户很满意),但ILOG有一个类似的工具here

quote

  

.NETOG算法的ILOG图   分享通用目标,例如:

     
      
  • 尽量减少重叠次数   节点
  •   
  • 尽量减少链接数量   渡
  •   
  • 最小化总面积   图纸
  •   
  • 尽量减少号码   弯曲(在正交图中)
  •   
  • 最大化形成的最小角度   通过连续的事件链接
  •   
  • 最大化对称显示
  •   
  • 支持增量布局,   部分布局,子图,   插图链接和嵌套布局
  •   

或许值得一看,至少。

答案 1 :(得分:1)

Diagram.NET是C#中一个免费的开源图表库。它在相当长的一段时间内没有更新,但它确实值得一看 - 有些东西你可以重复使用。

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

答案 2 :(得分:1)

您是否仅限于托管代码?

我没有这个限制和过去并有效地将GraphViz与.Net集成在一起。我们所做的是调用包含本机编译的“点”的外部进程,并将结果解析为.Net对象模型。它工作得很好,而且速度足以满足我们的需求。

我相信你今天可以用C ++ / CLI做得更好更容易。