Example #1
0
        private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (e.AddedItems.Count != 0)
            {
                App selApp = e.AddedItems[0] as App;
                DamWebAPI.ViewModel.Entity.Graphics graInfo = ViewModel.CreateNewGraphicDS(selApp);

                DrawGhpics(graInfo);

                tbExtreamInfo.Text = ViewModel.GetAppsInfo(graInfo) + getExtreamInfo();

                //只有显示一支仪器时才显示这条信息

                tbcaption.Text = string.Format("{0} {1} {2} {3}", selApp.AppName, selApp.X, selApp.Y, selApp.Z);



                propertyGrid.SelectedObject = new GraphicProperty(c1Chart, tby1, tby2, tbcaption);
            }
        }
Example #2
0
        private void DrawGhpics(DamWebAPI.ViewModel.Entity.Graphics graInfo)
        {
            c1Chart.BeginUpdate();

            double dashPixels = ResetChart();

            //一次性查询所有的数据

            var results = from i in graInfo.Lines
                          where i.IsShow == true
                          group i by i.UnitSymbol;  //根据 物理量单位 判断是不是同一类量

            List <CalculateValue> allCalcValues = null;

            tby1.Text = tby2.Text = tbcaption.Text = "";

            int lineIndex = 0;

            //根据多少个Y轴进行循环
            for (int i = 0; i < results.Count(); i++)
            {
                if (allCalcValues == null)
                {
                    //避免多个枚举
                    allCalcValues = ViewModel.GetAllCalcValues(graInfo).ToList();
                }

                //有N个Y轴
                Axis      yAxis   = null;
                TextBlock tbTitle = null;
                if (i == 0)
                {
                    yAxis      = c1Chart.View.AxisY;
                    yAxis.Name = "y1";

                    //set axis title
                    tbTitle = tby1;

                    yAxis.MajorGridStrokeDashes = new DoubleCollection(new double[] { dashPixels, dashPixels });
                }
                else
                {
                    //创建新的axis
                    yAxis = new Axis
                    {
                        AxisType = AxisType.Y,
                        Position = AxisPosition.Far,
                        Name     = "y" + (i + 1).ToString(),
                    };

                    c1Chart.View.Axes.Add(yAxis);
                    tbTitle = tby2;

                    //hid grid lines
                    yAxis.MajorGridStroke = Brushes.White;
                    yAxis.MinorGridStroke = Brushes.White;
                }

                string unitSymbol = results.ElementAt(i).Key;

                var groupItems = results.ElementAt(i).ToList();

                //物理量名称
                string calcName = groupItems.First().ParamName;

                if (groupItems.Count > 1)
                {
                    //有多个相同单位的物理量
                    calcName = "单位";
                }

                tbTitle.Text = string.Format("{0} {1}: {2}", tbTitle.Text, calcName, unitSymbol);



                for (int gi = 0; gi < groupItems.Count; gi++)
                {
                    var          item = groupItems.ElementAt(gi);
                    XYDataSeries ds   = new XYDataSeries();
                    if (gi == 0)
                    {
                        ds.PlotElementLoaded += ds_PlotElementLoaded;
                    }

                    ds.Label = item.LegendName;
                    var valCollection = (from val in allCalcValues
                                         where val.ParamId == item.ParamId
                                         orderby val.Date
                                         select val);

                    ObservableCollection <CalculateValue> collection = new ObservableCollection <CalculateValue>(valCollection);
                    //消除异常值

                    HandleErrorValue(collection);

                    ds.ItemsSource = collection;

                    ds.XValueBinding = new Binding("Date.DateTime");
                    ds.ValueBinding  = new Binding("Val");

                    //ds.XValuesSource = (from val in valCollection
                    //                    select val.Date.DateTime).ToArray();
                    //ds.ValuesSource = (from val in valCollection
                    //                   select val.Val).ToArray();

                    ds.AxisY = yAxis.Name;
                    //set line style
                    lineIndex = setLineStyle(lineIndex, ds);
                    c1Chart.Data.Children.Add(ds);
                }
            }
            c1Chart.EndUpdate();
        }