翻譯|使用教程|編輯:楊鵬連|2021-01-12 10:43:29.310|閱讀 321 次
概述:在本教程中,我們演示如何創(chuàng)建示例圖并使用LayeredLayout對其進行排列。該圖是使用Xamarin流程圖庫生成的。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
MindFusion.Diagramming for WinForms是一個能幫助你創(chuàng)建工作流和進程圖表的.NET控件;數(shù)據(jù)庫實體關(guān)系圖表;組織圖表;對象層次和關(guān)系圖表;圖表和樹。它是基于對象-圖表框,表格和箭頭類型,將其歸類分派給其他并結(jié)合成復(fù)雜的結(jié)構(gòu)。該控件提供超過預(yù)先定義的50多種圖表框,如自定義設(shè)計樣式和對圖表框著色等。MindFusion.Diagramming for WinForms現(xiàn)已加入在線訂購,Standard Single Developer版本原價2848現(xiàn)在搶購立享優(yōu)惠只需2345,立即查看詳情>>
點擊下載MindFusion.Diagramming for WinForms最新試用版
在本教程中,我們演示如何創(chuàng)建示例圖并使用LayeredLayout對其進行排列。該圖是使用Xamarin流程圖庫生成的。這是Android手機上最終應(yīng)用程序的屏幕截圖:
我們啟動Visual Studio,然后在項目模板的搜索框中鍵入“ Xamarin.Forms”。在搜索結(jié)果中,我們選擇“移動應(yīng)用程序(Xamarin.Forms)”,然后按“下一步”。
然后,為應(yīng)用程序選擇一個名稱,然后按“創(chuàng)建”。選擇您要定位的平臺:iOS,Android和UWP。我們的示例應(yīng)用程序支持所有這些。
創(chuàng)建新應(yīng)用程序后,我們將創(chuàng)建一個名為References的新文件夾,并在其中復(fù)制項目所需的所有程序集引用。這些是:然后,在Android中,您需要添加對以下內(nèi)容的引用:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:d="http://xamarin.com/schemas/2014/forms/design" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:diag="clr-namespace:MindFusion.Diagramming;assembly=MindFusion.Diagramming" mc:Ignorable="d" x:Class="LayeredLayout.MainPage"></ContentPage>我們將映射xmlns:diag添加到MindFusion.Diagramming程序集中的MindFusion.Diagramming命名空間。然后,我們需要聲明DiagramView類的實例,然后在XAML中進行操作:
> diag:DiagramView x:Name =“ diagramView” HorizontalOptions =“ FillAndExpand” VerticalOptions =“ FillAndExpand”>二.圖初始化
在公共項目中MainPage的代碼隱藏文件中,我們聲明一個類變量Diagram。我們將其分配給與DiagramView相關(guān)的圖
圖解圖;Diagram diagram; public MainPage() { InitializeComponent(); diagram = diagramView.Diagram; ........................... ........................... ........................... }我們將在單擊按鈕時創(chuàng)建一個圖表,因此將按鈕控件添加到XAML代碼中:
<StackLayout Orientation="Horizontal" HorizontalOptions="Center" Spacing="5" Padding="5"> <Button Text="Random" BorderColor="Black" BackgroundColor="Silver" Clicked="OnRandomClick" />我們將處理按鈕的Click事件以生成圖形。我們通過一種稱為RandomGraph的方法進行此操作。首先,清除圖中的所有項目(如果有):
private void RandomGraph() { diagram.ClearAll(); .................... }我們使用Factory類的CreateShapeNode方法生成節(jié)點,該方法可通過圖表的屬性訪問。
ShapeNode node = diagram.Factory.CreateShapeNode(0, 0, 40, 40); node.AnchorPattern = AnchorPattern.TopInBottomOut;
節(jié)點構(gòu)造函數(shù)將節(jié)點的位置和大小及其四個值作為參數(shù):頂部,左側(cè),寬度和高度。我們不在乎位置,因為我們將使用布局算法自動排列節(jié)點。
所述AnchorPattern屬性是重要的并且確定所述點,其中鏈接可以??康皆摴?jié)點。我們使用AnchorPattern枚舉的值之一。成員TopInBottomOut表示傳入鏈接將通過節(jié)點的頂部進入,傳出鏈接將從其底部開始。
最后,我們在節(jié)點之間創(chuàng)建隨機鏈接。我們再次使用Factory類,這次是CreateDiagramLink方法。我們選擇隨機節(jié)點并將其作為方法的參數(shù)提供:private void RandomGraph() { diagram.ClearAll(); for (int i = 0; i < 30; ++i) { int c = diagram.Nodes.Count; int g = 2 + random.Next(15); for (int j = 0; j < g; ++j) { ShapeNode node = diagram.Factory.CreateShapeNode(0, 0, 40, 40); node.AnchorPattern = AnchorPattern.TopInBottomOut; if (j > 0) diagram.Factory.CreateDiagramLink(diagram.Nodes[diagram.Nodes.Count - 2], node); } if (i > 0) { for (int j = 0; j < 1 + random.Next(3); ++j) diagram.Factory.CreateDiagramLink( diagram.Nodes[random.Next(c)], diagram.Nodes[c + random.Next(g)]); } } }
三.安排圖
我們選擇自動布局的LayeredLayout。像所有其他算法一樣,它是Layout名稱空間的成員,并通過一個方法應(yīng)用:ranging方法是Diagram類的成員。用您要應(yīng)用的布局實例調(diào)用它:
layout.Arrange(diagram);不同的算法具有不同的選項,可以微調(diào)排列的圖形。我們將“重新分配錨定”類型應(yīng)用于圖,這意味著鏈接將被重新分配到算法認(rèn)為最合適的位置。的NodeDistance和LayerDistance特性允許我們能夠控制節(jié)點和該曲線圖的層之間的間距。許多算法都使用它們。
我們將應(yīng)用另外兩個特定于布局的屬性:EnforceLinkFlow和StraightenLongLinks。顧名思義,他們試圖使鏈接遵循一個方向并拉直那些跨層的鏈接。
至此,我們的教程結(jié)束了。
Xamarin的圖表:圖表組件為所有Xamarin應(yīng)用程序提供了完整的功能集,以創(chuàng)建,編輯和自定義流程圖,圖表,圖形,層次結(jié)構(gòu),方案等??丶腁PI直觀且易于使用,具有許多屬性,可讓您控制圖表外觀和行為的各個方面。您有一組豐富的預(yù)定義節(jié)點和鏈接可供選擇,還有表節(jié)點,復(fù)合節(jié)點,不同的畫筆和筆類型以及各種布局算法。在//mindfusion.eu/xamarin-diagram.html上了解有關(guān)Xamarin圖表的更多信息。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: