我为某些事情创建了工作流程/流程图样式设计器。目前,它使用相对简单的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);
答案 0 :(得分:1)
我还没有尝试过(虽然我是他们Gantt产品的客户很满意),但ILOG有一个类似的工具here。
致quote:
.NETOG算法的ILOG图 分享通用目标,例如:
- 尽量减少重叠次数 节点
- 尽量减少链接数量 渡
- 最小化总面积 图纸
- 尽量减少号码 弯曲(在正交图中)
- 最大化形成的最小角度 通过连续的事件链接
- 最大化对称显示
- 支持增量布局, 部分布局,子图, 插图链接和嵌套布局
或许值得一看,至少。
答案 1 :(得分:1)
Diagram.NET是C#中一个免费的开源图表库。它在相当长的一段时间内没有更新,但它确实值得一看 - 有些东西你可以重复使用。
答案 2 :(得分:1)
您是否仅限于托管代码?
我没有这个限制和过去并有效地将GraphViz与.Net集成在一起。我们所做的是调用包含本机编译的“点”的外部进程,并将结果解析为.Net对象模型。它工作得很好,而且速度足以满足我们的需求。
我相信你今天可以用C ++ / CLI做得更好更容易。