翻譯|其它|編輯:吳園園|2019-09-06 11:29:12.930|閱讀 350 次
概述:MindFusion.Diagramming for WinForms是一款能夠幫助你輕松創建流程圖和示意圖的.NET控件,可以自定義設計樣式和圖表框顏色。本文整理了用戶常見LayeredLayout分區設置問題,希望對您有所幫助。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
MindFusion.Diagramming for WinForms是一個能幫助你創建工作流和進程圖表的.NET控件;數據庫實體關系圖表;組織圖表;對象層次和關系圖表;圖表和樹。它是基于對象-圖表框,表格和箭頭類型,將其歸類分派給其他并結合成復雜的結構。該控件提供超過預先定義的50多種圖表框,如自定義設計樣式和對圖表框著色等。
點擊下載MindFusion.Diagramming for WinForms最新試用版
問:我們根據MindFusion.Diagramming for WinForms給定的連接數據自動布局流程計劃,并嘗試了各種可用的布局變體,我們選擇LayeredLayout作為示例。此外,有必要將流程計劃(分別是其節點)劃分到某些區域(詳情見圖一)。想問有沒有一種方法可以在LayeredLayout中設置分區。

(圖一)
答:LayeredLayout中沒有內置任何內容來允許分區。您可以嘗試使用SwimlaneLayout,或者對LayeredLayout進行一些后期處理,將節點移動到保留布局相對位置的區域,只更改Y:
var ll = new LayeredLayout();
ll.Orientation = MindFusion.Diagramming.Layout.Orientation.Horizontal;
ll.EnforceLinkFlow = true;
ll.Arrange(diagram);
var columns = new Dictionary<int, List<DiagramNode>>();
foreach (var node in diagram.Nodes)
{
if (!ll.Statistics.NodeLayerIndices.ContainsKey(node))
continue;
var l = ll.Statistics.NodeLayerIndices[node];
if (!columns.ContainsKey(l))
columns[l] = new List<DiagramNode>();
columns[l].Add(node);
}
foreach (var column in columns.Values)
{
column.Sort((n1, n2) =>
{
int area1 = (int)n1.Tag;
int area2 = (int)n2.Tag;
int areaComparison = area1.CompareTo(area2);
if (areaComparison != 0)
return areaComparison;
return n1.Bounds.Y.CompareTo(n2.Bounds.Y);
});
float y = diagram.Bounds.Top + 10;
for (int i = 0; i < column.Count; i++)
{
var node = column[i];
int area = (int)node.Tag;
float minAreaY = area * 70; // replace this with your area definitions
if (y < minAreaY)
y = minAreaY;
node.Move(node.Bounds.X, y);
y += node.Bounds.Height + 10;
}
}
//diagram.RouteAllLinks();問:在我們實現給定代碼之后,將節點移動到所需的通道是完美的。但是在調用diagram.RouteAllLinks()之后發生了一個奇怪的問題。方法。我附上了2張圖片,一張是在調用上述方法之前,另一張是之后的。第6節點和第7節點以及第10節點和第11節點之間的節點鏈路應該相同,但是第10節點和第11節點之間的鏈路是奇怪的。這是什么原因呢?

(圖二)

(圖三)
答:嘗試將diagram.LinkRouter設置為GridRouter實例,并在必要時在RoutingOptions中設置更大的彎曲成本。
問:這解決了這個圖上的問題,但在其他一些我再次注意到類似的東西。(詳情請看圖四和圖五)。使用QuickRouter鏈接按預期繪制,但現在使用GridRouter它很奇怪。我試過操縱TurnCost,CrossingCost,NodeVicinityCost屬性但沒有幫助。

(圖四)

(圖五)
答:也許嘗試使用更小的RoutingOptions.GridSize,或者將節點位置和大小與當前大小的多個對齊。第一個鏈接彎曲將始終是節點占用的網格區域之外的至少一個網格塊,添加了RoutingOptions.EndPointsOffset - 如果現在更大,則嘗試將后者設置為0。
=====================================================
問答持續更新中>>>
MindFusion.Diagramming for WinForms現已加入在線訂購,點擊此處查看價格~
想要購買MindFusion.Diagramming for WinForms正版授權的朋友歡迎哦~
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉載自: