2011-06-16 13 views
8

任何人都可以點我的一個例子如何在的WinForms應用程序(C#)通過ElementHost使用Graph#樣品使用圖形#中的WinForms

尤其是加載* .gml文件並顯示圖形控件。

任何幫助讚賞

+0

也許你應該問的傢伙(Palez項目協調員)誰說,這是可以做到這樣在這個線程中:http://graphsharp.codeplex.com/discussions/58000 – 2011-06-21 05:08:34

+0

@Jeremy:我想我自己搞清楚了。一些更多的帖子和我的大腦做的伎倆... – 2011-06-21 18:56:10

+0

偉大的東西隊友,請張貼技巧或裸骨的例子。如果你這樣做,我相信你會得到超過+50賞金 – 2011-06-23 03:44:21

回答

6

基本的想法是創建一個WPF用戶控件,它封裝了一個Graph#canvas。這個用戶控件就是你在ElementHost中顯示的內容。

我已經放在一起的一個小示例應用程序,通過基本暴露GraphSharp.Sample.TestCompoundLayout窗口作爲用戶控件演示此。

http://cl.ly/0w350230200g0w0o2R2N

我還添加了從基本上可以歸結爲這個功能GML文件加載:

 var graph = new CompoundGraph<object, IEdge<object>>(); 

     try 
     { 
      //open the file of the graph 
      var reader = XmlReader.Create(fileName); 

      //create the serializer 
      var serializer = new GraphMLDeserializer<object, IEdge<object>, CompoundGraph<object, IEdge<object>>>(); 


      //deserialize the graph 
      serializer.Deserialize(reader, graph, 
            id => id, (source, target, id) => new Edge<object>(source, target) 
       ); 

     } 
     catch (Exception ex) 
     { 
      Debug.WriteLine(ex); 
     } 
     layout.Graph = graph; 
     layout.UpdateLayout(); 
+0

其中從GraphSharp控制你採取? – 2011-06-25 18:35:38

+0

如果您查看了答案中的完整源代碼,您會發現是WPF用戶控件的GraphSharpControl.xaml/GraphSharpControl.xaml.cs。它基本上是一個重構的GraphShapr.Sampl.TestCompountLayout文件。上面代碼段中引用的佈局元素在XAML中定義爲: Frank 2011-06-26 00:05:44

+0

非常感謝!我確實要求我的問題主要是幫助其他人,並且只是簡單地說,您的示例代碼在未來的某些時間將不可用。 – 2011-06-26 18:26:11