通过这里的图表我的意思是类似这些图像的东西:
![]()
理想的解决方案是:
我也有兴趣了解可能被用作此类工作起点的项目.如果需要一些开发来实现我想要的东西,那么我已经准备好解决它了.这个目标中最复杂的部分似乎是在合理的时间范围内获得图形布局.
我正在构建一个.dot文件来表示有向无环图.
我需要从这个graph.dot文件生成一个图像(使用C#),这样我就可以在我的应用程序的图片框中显示图像.我应该使用什么库?
在命令提示符中使用GraphViz的命令:
dot -Tpng graph.dot -o graph.png
Run Code Online (Sandbox Code Playgroud)
我能够生成图像,所以我知道我的.dot文件的格式是正确的.
谢谢.
我是P/如图所示调用Graphviz .当我写这篇博客文章时,代码运行得很好.现在,我把在一起的HttpModule呈现使用代码Graphviz的图形,但我得到了AccessViolationException在agmemread.
// Native signature
Agraph_t agmemread(char *);
// P/Invoke Signature
[DllImport(LIB_GRAPH)]
private static extern IntPtr agmemread(string data);
// Usage
IntPtr g = agmemread(data);
Run Code Online (Sandbox Code Playgroud)
就像我说的,这之前完美无缺.但现在,我无法让我的代码适用于任何事情.即使我基于相同代码的旧Graphviz应用程序也不再起作用.
我可能有什么改变会导致这种情况?我甚至没有下载新版本的Graphviz或任何东西,所以DLL都是一样的.
编辑:我尝试string改为StringBuilder,但产生了相同的结果.然后,我添加了一个MarshalAs属性:
static extern IntPtr agmemread([MarshalAs(UnmanagedType.LPWStr)] string data);
Run Code Online (Sandbox Code Playgroud)
有了它,我不再得到一个AccessViolationException,但Graphviz无法正确读取字符串并返回空指针.