翻譯|使用教程|編輯:龔雪|2020-11-30 09:56:07.737|閱讀 319 次
概述:DevExpress WinForms擁有180+組件和UI庫,v20.2日前全新發布,本文將為大家介紹新版本中重磅發布的SankeyDiagramControl類,有興趣的朋友可以下載最新版控件體驗產品功能哦~
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
下載DevExpress v20.2完整版 DevExpress v20.2漢化資源獲取
DevExpress WinForms能完美構建流暢、美觀且易于使用的應用程序,無論是Office風格的界面,還是分析處理大批量的業務數據,它都能輕松勝任!體驗?點擊下載>>
要基于自定義算法繪制鏈接和節點,請創建一個實現接口的類。 然后,將此類的對象分配給Colorizer屬性。
以下代碼實現了一個 colorizer,該 colorizer將隨機顏色應用于節點,并指定用于將漸變填充應用于鏈接的顏色:
C#
private void Form1_Load(object sender, EventArgs e) { sankeyDiagramControl1.Colorizer = new MyColorizer { LinkSourceColor = Color.Red, LinkTargetColor = Color.Yellow }; public class MyColorizer : ISankeyColorizer { public event EventHandler ColorizerChanged; Random rand = new Random(); Dictionary<string, Color> KeyColorPairs = new Dictionary<string, Color>(); public Color LinkSourceColor { get; set; } public Color LinkTargetColor { get; set; } public Color GetLinkSourceColor(SankeyLink link) { return LinkSourceColor; } public Color GetLinkTargetColor(SankeyLink link) { return LinkTargetColor; } public Color GetNodeColor(SankeyNode info) { if (!KeyColorPairs.TryGetValue((string)info.Tag, out Color nodeColor)) { nodeColor = GenerateColor(); KeyColorPairs.Add((string)info.Tag, nodeColor); } return nodeColor; } private Color GenerateColor() { return Color.FromArgb(rand.Next(256), rand.Next(256), rand.Next(256)); } }
VB.NET
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) sankeyDiagramControl1.Colorizer = New MyColorizer With { .LinkSourceColor = Color.Red, .LinkTargetColor = Color.Yellow } End Sub Public Class MyColorizer Inherits ISankeyColorizer Public Event ColorizerChanged As EventHandler Private rand As Random = New Random() Private KeyColorPairs As Dictionary(Of String, Color) = New Dictionary(Of String, Color)() Public Property LinkSourceColor As Color Public Property LinkTargetColor As Color Public Function GetLinkSourceColor(ByVal link As SankeyLink) As Color Return LinkSourceColor End Function Public Function GetLinkTargetColor(ByVal link As SankeyLink) As Color Return LinkTargetColor End Function Public Function GetNodeColor(ByVal info As SankeyNode) As Color Dim nodeColor As Color = Nothing If Not KeyColorPairs.TryGetValue(CStr(info.Tag), nodeColor) Then nodeColor = GenerateColor() KeyColorPairs.Add(CStr(info.Tag), nodeColor) End If Return nodeColor End Function Private Function GenerateColor() As Color Return Color.FromArgb(rand.Next(256), rand.Next(256), rand.Next(256)) End Function End Class
當鼠標指針懸停在節點或鏈接上時,將顯示工具提示。 使用 、和 屬性可以禁用/啟用工具提示并自定義其外觀。 要格式化工具提示文本,請處理和事件,并在事件處理程序中指定和屬性。
以下代碼格式化了工具提示中使用的文本,e.Node.Tag、e.Link.Source.Tag和e.Link.Target.Tag屬性存儲在默認工具提示標題中顯示的值。 要獲取節點和鏈接權重,請使用e.Node.TotalWeight和e.Link.TotalWeight屬性。
C#
private void Form1_Load(object sender, EventArgs e) { sankeyDiagramControl1.ToolTipOptions.LinkToolTipEnabled = DevExpress.Utils.DefaultBoolean.True; sankeyDiagramControl1.ToolTipOptions.NodeToolTipEnabled = DevExpress.Utils.DefaultBoolean.True; sankeyDiagramControl1.ToolTipController = new DevExpress.Utils.ToolTipController { ToolTipType = DevExpress.Utils.ToolTipType.Flyout, AllowHtmlText = true }; sankeyDiagramControl1.CustomizeNodeToolTip += OnCustomizeNodeToolTip; sankeyDiagramControl1.CustomizeLinkToolTip += OnCustomizeLinkToolTip; } private void OnCustomizeNodeToolTip(object sender, CustomizeSankeyNodeToolTipEventArgs e) { e.Title = $"Country: <u>{e.Node.Tag}</u>"; e.Content = $"{e.Node.TotalWeight:f1}"; } private void OnCustomizeLinkToolTip(object sender, CustomizeSankeyLinkToolTipEventArgs e) { e.Title = $"{e.Link.Source.Tag} → {e.Link.Target.Tag}"; e.Content = $"{e.Link.TotalWeight}"; }
VB.NET
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) sankeyDiagramControl1.ToolTipOptions.LinkToolTipEnabled = DevExpress.Utils.DefaultBoolean.[True] sankeyDiagramControl1.ToolTipOptions.NodeToolTipEnabled = DevExpress.Utils.DefaultBoolean.[True] sankeyDiagramControl1.ToolTipController = New DevExpress.Utils.ToolTipController With { .ToolTipType = DevExpress.Utils.ToolTipType.Flyout, .AllowHtmlText = True } sankeyDiagramControl1.CustomizeNodeToolTip += AddressOf OnCustomizeNodeToolTip sankeyDiagramControl1.CustomizeLinkToolTip += AddressOf OnCustomizeLinkToolTip End Sub Private Sub OnCustomizeNodeToolTip(ByVal sender As Object, ByVal e As CustomizeSankeyNodeToolTipEventArgs) e.Title = $"Country: <u>{e.Node.Tag}</u>" e.Text = $"{e.Node.TotalWeight:f1}" End Sub Private Sub OnCustomizeLinkToolTip(ByVal sender As Object, ByVal e As CustomizeSankeyLinkToolTipEventArgs) e.Title = $"{e.Link.Source.Tag} → {e.Link.Target.Tag}" e.Text = $"{e.Link.TotalWeight}"; End Sub
要打印控件,請選擇使用以下方法:
使用以下方法可以將控件導出為各種格式:
下面的代碼將生成的Sankey圖圖像的寬度設置為文檔寬度,并將Sankey圖導出為PDF文件:
C#
sankeyDiagramControl1.OptionsPrint.SizeMode = DevExpress.XtraCharts.Printing.PrintSizeMode.Zoom; sankeyDiagramControl1.ExportToPdf("D://sankey.pdf");
VB.NET
sankeyDiagramControl1.OptionsPrint.SizeMode = DevExpress.XtraCharts.Printing.PrintSizeMode.Zoom sankeyDiagramControl1.ExportToPdf("D://sankey.pdf")
DevExpress技術交流群2:775869749 歡迎一起進群討論
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網