Пример #1
0
        public List <string> ResultList()
        {
            List <string> list = new List <string>();

            foreach (var dNode in _listFlowNode)
            {
                if (dNode.Kind != NodeKinds.Distribute)
                {
                    continue;
                }

                double result = 0;
                string rltStr = "";

                foreach (var node in dNode.ListFlowNode)
                {
                    string subStr = "";
                    double subRst = 0;

                    if (node.Kind == NodeKinds.ConstantPayload)
                    {
                        ConstantPayloadNode cpn = (ConstantPayloadNode)node.SubControl;

                        double constant = Convert.ToDouble(cpn.Constant());
                        double para     = Convert.ToDouble(cpn.Parameter());
                        subRst = constant * para;
                        subStr = cpn.Constant() + "X" + cpn.Parameter();
                    }
                    else if (node.Kind == NodeKinds.FlexiblePaylaod)
                    {
                        FlexiblePayloadNode fpn = (FlexiblePayloadNode)node.SubControl;

                        double constant = Convert.ToDouble(fpn.Constant());
                        double para     = Convert.ToDouble(fpn.Parameter());
                        double para2    = Convert.ToDouble(fpn.Parameter2());

                        subRst = constant * para * para2;
                        subStr = fpn.Constant() + "X" + fpn.Parameter() + "X" + fpn.Parameter2();
                    }

                    result += subRst;
                    if (rltStr == "")
                    {
                        rltStr = subStr;
                    }
                    else
                    {
                        rltStr = rltStr + "+" + subStr;
                    }
                }

                rltStr = rltStr + "=" + result.ToString();

                DistributeNode dn = (DistributeNode)dNode.SubControl;

                string coeAStr = dn.Coefficient();
                double rstA    = result * Convert.ToDouble(coeAStr);
                string strA    = "A " + result.ToString() + "X" + coeAStr + "= " + "" + rstA.ToString();

                string coeBStr = dn.Coefficient2();
                double rstB    = result * Convert.ToDouble(coeBStr);
                string strB    = "B " + result.ToString() + "X" + coeBStr + "= " + "" + rstB.ToString();

                string coeCStr = dn.Coefficient3();
                double rstC    = result * Convert.ToDouble(coeCStr);
                string strC    = "C " + result.ToString() + "X" + coeCStr + "= " + "" + rstC.ToString();

                list.Add(rltStr);
                list.Add(strA);
                list.Add(strB);
                list.Add(strC);
            }

            _result = list[0];
            _a      = list[1];
            _b      = list[2];
            _c      = list[3];

            return(list);
        }
Пример #2
0
        public static FrameworkElement CreateContent(FlowNode node)
        {
            var textBlock = new TextBlock()
            {
                VerticalAlignment   = VerticalAlignment.Center,
                HorizontalAlignment = HorizontalAlignment.Center
            };
            var b = new Binding("Text");

            b.Source = node;
            textBlock.SetBinding(TextBlock.TextProperty, b);

            if (node.Kind == NodeKinds.Start || node.Kind == NodeKinds.End)
            {
                var ui = new Border();
                ui.CornerRadius    = new CornerRadius(15);
                ui.BorderBrush     = Brushes.Black;
                ui.BorderThickness = new Thickness(1);
                ui.Background      = Brushes.Yellow;
                ui.Child           = textBlock;
                return(ui);
            }
            else if (node.Kind == NodeKinds.Action)
            {
                var ui = new Border();
                ui.BorderBrush     = Brushes.Black;
                ui.BorderThickness = new Thickness(1);
                ui.Background      = Brushes.Lime;;
                ui.Child           = textBlock;
                return(ui);
            }
            else if (node.Kind == NodeKinds.Condition)
            {
                var ui = new Path();
                ui.Stroke          = Brushes.Black;
                ui.StrokeThickness = 1;
                ui.Fill            = Brushes.Pink;
                var converter = new GeometryConverter();
                ui.Data    = (Geometry)converter.ConvertFrom("M 0,0.25 L 0.5 0 L 1,0.25 L 0.5,0.5 Z");
                ui.Stretch = Stretch.Uniform;

                var grid = new Grid();
                grid.Children.Add(ui);
                grid.Children.Add(textBlock);

                return(grid);
            }
            else if (node.Kind == NodeKinds.ConstantPayload)
            {
                var cpn = new ConstantPayloadNode();
                node.SubControl = cpn;

                var ui = new Border();
                ui.BorderThickness = new Thickness(0);
                ui.Background      = Brushes.LightBlue;
                ui.Child           = cpn;
                return(ui);
            }
            else
            if (node.Kind == NodeKinds.FlexiblePaylaod)
            {
                var fpn = new FlexiblePayloadNode();
                node.SubControl = fpn;

                var ui = new Border();
                ui.BorderThickness = new Thickness(0);
                ui.Background      = Brushes.LightBlue;
                ui.Child           = fpn;
                return(ui);
            }
            else if (node.Kind == NodeKinds.Distribute)
            {
                var dn = new DistributeNode();
                node.SubControl = dn;

                var ui = new Border();
                ui.BorderThickness = new Thickness(0);
                ui.Background      = Brushes.LightBlue;
                ui.Child           = dn;
                return(ui);
            }
            else
            {
                var output = new OutputNode();
                node.SubControl = output;

                var ui = new Border();
                ui.BorderThickness = new Thickness(0);
                ui.Background      = Brushes.LightBlue;
                ui.Child           = output;
                return(ui);
            }
        }