private SankeyNode CreateNode(SankeyData data, string name) { var label = new TextBlock() { Text = name }; var shape = new Rectangle(); label.Tag = shape.Tag = name; // for highlighting or other actions shape.MouseEnter += NodeMouseEnter; shape.MouseLeave += NodeMouseLeave; shape.MouseLeftButtonUp += NodeMouseLeftButtonUp; label.MouseLeftButtonUp += NodeMouseLeftButtonUp; if (diagram.SankeyFlowDirection == FlowDirection.TopToBottom) { shape.Height = diagram.NodeThickness; } else { shape.Width = diagram.NodeThickness; } var node = new SankeyNode(shape, label); node.Name = name; styleManager.SetNodeBrush(node); return(node); }
private void MeatureNodeLabel(SankeyNode node) { var size = MeasureHepler.MeasureString(node.Name, diagram.LabelStyle, CultureInfo.CurrentCulture); node.LabelHeight = size.Height; node.LabelWidth = size.Width; }
private void MinimizeNode(SankeyNode node, double minimizeOpacity, List <string> minimizeNodes) { node.Shape.Fill.Opacity = minimizeOpacity; node.IsHighlight = false; minimizeNodes.Add(node.Name); node.Label.Opacity = minimizeOpacity; }
public SankeyLink(SankeyNode fromNode, SankeyNode toNode, Path shape, double weight, Brush originalShapeBrush) { FromNode = fromNode; ToNode = toNode; Shape = shape; Weight = weight; OriginalBrush = originalShapeBrush; }
public void SetNodeBrush(SankeyNode node) { var brushCheck = diagram.NodeBrushes != null && diagram.NodeBrushes.Keys.Contains(node.Name); if (brushCheck) { node.Shape.Fill = diagram.NodeBrushes[node.Name].CloneCurrentValue(); } else { if (diagram.UsePallette != SankeyPalette.None) { node.Shape.Fill = defaultNodeLinksPalette[DefaultNodeLinksPaletteIndex].CloneCurrentValue(); DefaultNodeLinksPaletteIndex++; if (DefaultNodeLinksPaletteIndex >= defaultNodeLinksPalette.Count) { DefaultNodeLinksPaletteIndex = 0; } } } node.OriginalBrush = node.Shape.Fill.CloneCurrentValue(); }
private void MinimizeNode(SankeyNode node, double minimizeOpacity, List<string> minimizeNodes) { node.Shape.Fill.Opacity = minimizeOpacity; node.IsHighlight = false; minimizeNodes.Add(node.Label.Text); node.Label.Opacity = minimizeOpacity; }
private static double GetCenterValue(SankeyNode node, FlowDirection flowDirection) { return(flowDirection == FlowDirection.TopToBottom ? node.X + node.Shape.Width / 2 : node.Y + node.Shape.Height / 2); }