Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET库绘制避开障碍物的路线_C#_Gdi+_Line_Spline - Fatal编程技术网

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

C# .NET库绘制避开障碍物的路线,c#,gdi+,line,spline,C#,Gdi+,Line,Spline,我已经为一些东西创建了一个工作流/流程图样式的设计器。目前,它正在使用相对简单的贝塞尔曲线连接工作流中“块”的各个端点 不过,我想让用户更直观一点。我希望这些线能够避开障碍物,比如其他块(矩形),也可能是其他线 我更喜欢贝塞尔样条曲线,而不是多段线,因为它们更漂亮,似乎更适合设计师。但是,如果它们更难实现,我愿意妥协 我知道这背后有大量的科学依据。我研究过Graphviz、微软的GLEE和他们的商业AGL(自动图形布局)库 《欢乐合唱团》似乎几乎不值得制作。他们的商业选择是,嗯,商业选择。。。相

我已经为一些东西创建了一个工作流/流程图样式的设计器。目前,它正在使用相对简单的贝塞尔曲线连接工作流中“块”的各个端点

不过,我想让用户更直观一点。我希望这些线能够避开障碍物,比如其他块(矩形),也可能是其他线

我更喜欢贝塞尔样条曲线,而不是多段线,因为它们更漂亮,似乎更适合设计师。但是,如果它们更难实现,我愿意妥协

我知道这背后有大量的科学依据。我研究过Graphviz、微软的GLEE和他们的商业AGL(自动图形布局)库

《欢乐合唱团》似乎几乎不值得制作。他们的商业选择是,嗯,商业选择。。。相当贵

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

我看到了Windows工作流基金会为其“自由表单设计器”所使用的折线实现。这是可行的,只是,但它不是真正的生产级外观

我很惊讶没有什么插件.NET库来支持这种类型的东西?比如:

点[]路线路线路线(点起点、点终点、矩形[]矩形障碍物、点[]线障碍物)

我还没有尝试过(尽管我是他们产品的一个愉快的客户),但我有一个类似的工具

致:

NET算法的ILOG图 共享通用目标,例如:

  • 最小化重叠的数量 节点
  • 最小化链接数 穿越
  • 最小化总面积 图纸的
  • 最小化数量 弯管的尺寸(在正交图纸中)
  • 最大化形成的最小角度 按连续事件链接
  • 最大化对称性的显示
  • 支持增量布局, 局部布局,子图, 图间链接和嵌套布局

至少值得一看。

Diagram.NET是一个免费的、开源的C#绘图库。它已经有一段时间没有更新了,但是它确实值得一看——那里可能有一些东西你可以重用


您是否仅限于托管代码

我没有这个限制,也没有将GraphViz与.Net有效集成的历史。我们所做的是调用包含本机编译的“点”的外部进程,并在.Net对象模型中解析结果。它工作完美,速度足够快,满足我们的需要


我相信现在使用C++/CLI可以做得更好、更简单。

这听起来几乎是NP完全的…:)@罗布:我相信这实际上与旅行推销员问题是同构的。我想xkcd角色提供的论文是关于模拟退火的,如果你有很多行要处理,这可能值得考虑。例如,我相信PCB布线软件就是这样工作的。@ThomasWeller为什么你认为
Diagram.NET
与.NET的“ILOG图”是一样的?@Prokurors我很确定它们是完全不同的;不幸的是,看起来伊洛格被吞下了;真遗憾,我真的很喜欢他们的甘特工具。