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); }
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); } }