Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        private void MeatureNodeLabel(SankeyNode node)
        {
            var size = MeasureHepler.MeasureString(node.Name, diagram.LabelStyle, CultureInfo.CurrentCulture);

            node.LabelHeight = size.Height;
            node.LabelWidth  = size.Width;
        }
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
 public SankeyLink(SankeyNode fromNode, SankeyNode toNode, Path shape, double weight, Brush originalShapeBrush)
 {
     FromNode      = fromNode;
     ToNode        = toNode;
     Shape         = shape;
     Weight        = weight;
     OriginalBrush = originalShapeBrush;
 }
Esempio n. 5
0
        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);
 }