2010-05-17 36 views
10

我需要可視化this kind的圖形。我不知道如何命名(順便說一句,如果你知道的話 - 如果你告訴我,我會很感激的)。這對圖元素是可點擊的是理想的(因此當用戶點擊一個塊時,我可以處理具有指定元素ID的事件),但即使沒有任何交互性,我也可以存活。我可能希望能夠專注於特定的節點並佈置所有其他節點以從其角度來查看。有沒有可用的組件可用於此任務?如果不是,我應該尋找什麼來幫助我開發一個用視覺舒適的佈局繪製這樣的圖的算法?如何在.Net中可視化複雜圖形?

該圖的實際性質很常見:每個塊代表2個操作數的派生。橙色圓圈是對2個操作數的引用,綠色圓圈是對消費者的連接點。區分操作數位置(左或右)可能很重要,例如,如果派生表示差分或分割的數學運算(在這種情況下,塊可以是三角形的,但在其他情況下,操作數本身可以利用意識到哪些塊是左邊的操作數,哪些塊是右邊的)。另一個常見的應用是複雜關係的交集。

回答

6

你可以看看Graph#,但我不確定它將如何處理這樣的複合節點。不過這可能是一個很好的起點。

2

那麼,你首先需要以某種方式表示它在內存中,有很多方法,如adjacency list。然後你需要畫出它。儘管通常繪製圖形很簡單,但如果您需要layout it,則並不那麼簡單。看起來像你的情況,這正是你需要做的,以達到這個好表現。這並不容易。

編輯:有趣的是,似乎有一個由微軟研究院製作的library

2

我不知道它會在這種特定的情況多麼有用,但你可能想看看http://quickgraph.codeplex.com/

+0

更新:http://quickgraph.codeplex。com/ – bob 2010-05-17 10:37:36

+1

@bob歡呼,更新了網址 – ICR 2010-05-17 12:02:12

1

我找不到這個組件,我決定writen我自己控制,線,頭,並用它們來可視化我圖的 如果需要你,我可以給它的組件和程序來證明他/ 我writen組件和程序的Visual Studio 2008中的語言C#

+0

非常感謝Andriy。我會很樂意嘗試申請和/或擴展(當然,將我的擴展發回給您)您的解決方案。請將它發送到[email protected](對於一個可怕的地址感到抱歉,它是真實的,而不是臨時的,只是照原樣複製它;不幸的是我在本網站上沒有發現私人消息系統,也沒有發現您的個人資料中的聯繫人,在公共網頁上發佈我的電子郵件) – Ivan 2010-05-17 10:27:19

2

我也想給你點graphviz。它不是一個.NET解決方案,但您可以爲它提供足夠簡單的文件以獲取圖表。我不認爲佈局是一件非常簡單的事情,尤其是隨着節點數量的增加,所以爲它找到一些工具應該是一件好事。

+0

有一些從C#調用graphviz的綁定。他們對我來說都顯得有點實驗。 – 2010-05-17 10:39:24

1

一個很好看的是從Nevron的圖工具。但它是not for free

我目前正在使用他們的圖表和用戶界面,他們工作得很好。

0

都用這個商業產品的成功:GoDiagram

它支持節點上的多個端口像你證明。