Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.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#_.net_Graphics_Graph - Fatal编程技术网

C# 如何在.Net中可视化复杂的图形?

C# 如何在.Net中可视化复杂的图形?,c#,.net,graphics,graph,C#,.net,Graphics,Graph,我需要可视化一个图表。我不知道怎么命名(顺便说一句,如果你知道的话——如果你告诉我,我将不胜感激)。图形元素是可点击的(这样,当用户点击一个块时,我可以用指定的元素id处理事件),但即使没有任何交互,我也可以存活下来。我可能希望能够专注于一个特定的节点,并布局所有其他节点以从其角度进行查看。是否有适合此任务的组件?如果没有,我应该寻找什么来帮助我开发一个算法来绘制这样一个具有视觉舒适布局的图形 此图的实际性质非常常见:每个块表示从2个操作数派生的结果。橙色圆圈是对2个操作数的引用,绿色圆圈是对使

我需要可视化一个图表。我不知道怎么命名(顺便说一句,如果你知道的话——如果你告诉我,我将不胜感激)。图形元素是可点击的(这样,当用户点击一个块时,我可以用指定的元素id处理事件),但即使没有任何交互,我也可以存活下来。我可能希望能够专注于一个特定的节点,并布局所有其他节点以从其角度进行查看。是否有适合此任务的组件?如果没有,我应该寻找什么来帮助我开发一个算法来绘制这样一个具有视觉舒适布局的图形


此图的实际性质非常常见:每个块表示从2个操作数派生的结果。橙色圆圈是对2个操作数的引用,绿色圆圈是对使用者的连接点。区分操作数位置(左或右)可能很重要,例如,如果派生表示差分或除法的数学运算(在这种特殊情况下,块可以是三角形,但在其他情况下,操作数本身可以利用了解哪些块是左操作数,哪些块是右操作数)。另一个常见的应用程序是具有复杂关系的相交集。

您可以看一看,但我不确定它将如何处理这样的复合节点。不过,这可能是一个很好的起点。

嗯,首先需要在内存中以某种方式表示它,有很多方法,例如。然后您需要绘制它一个图是简单的,如果你需要的话,它不是那么简单。看起来在你的例子中,这正是你需要做的,来得到一个很好的表示。这并不容易


编辑:有趣的是,似乎有一个由Microsoft Research制作的组件。

我不知道它在这个特定场景中会有多大用处,但您可能想看看它。

我找不到这个组件,我决定编写自己的控件、线和头,并使用它们来可视化我的图形 如果需要,我可以提供组件和程序来演示/
我用visual studio 2008语言C#

编写了组件和程序,我还想向您指出。它不是.NET解决方案,但您可以为它提供足够容易编写的文件,以便创建图形。我认为布局不是一件非常简单的事情,特别是随着节点数的增加,因此找到一些工具。一个相当好看的工具是来自的图表工具。但是它是


我目前正在使用他们的图表和用户界面,它们工作得很好。

提供了图形可视化的WPF组件。它依赖于(开源命令行图形可视化工具)。

成功地使用了此商业产品:


它支持如您所示的节点上的多个端口。

因为看起来微软自己在图形可视化方面做得非常好,称为
自动图形布局


这是一个链接。

这是一个相当新的、维护良好的.NET Graphviz包装器:

(免责声明:我是作者)


此包装器的工作方式与其他包装器不同,因为它直接调用本机Graphviz代码。这意味着您不仅可以通过编程在C代码中构建图形,还可以在C代码中读回布局属性,并以任何方式呈现它。后者听起来特别像是您需要集成的东西休息。

非常感谢您,安德烈。我很高兴尝试应用和/或扩展(当然,将我的扩展发送回您)您的解决方案。请将其发送至wosesixukijimono@tempomail.fr (对于一个可怕的地址,我很抱歉,它是真实的,只是暂时的,只是复制粘贴它;不幸的是,我在这个网站上既没有找到私人消息系统,也没有在你的个人资料中找到你的联系人,同时我避免在公共网页上发布我的电子邮件)有一些用于从C#调用graphviz的绑定。它们在我看来都有点实验性。您的图像链接已断开,请在您的问题中嵌入替换图像好吗?谢谢。