Exemplo n.º 1
0
        void UptadeSeries(Series series, XYDiagramPaneBase pane, AxisYBase axis)
        {
            XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)series.View;

            view.AxisY = axis;
            view.Pane  = pane;
        }
        protected virtual Series CreateSeries(StrategyDataItemInfo info)
        {
            CheckAddPanel(info);
            Series res = null;

            if (info.ChartType == ChartType.CandleStick)
            {
                res = CreateCandleStickSeries(info);
            }
            if (info.ChartType == ChartType.Line)
            {
                res = CreateLineSeries(info);
            }
            if (info.ChartType == ChartType.Bar)
            {
                res = CreateBarSeries(info);
            }
            if (info.ChartType == ChartType.Area)
            {
                res = CreateAreaSeries(info);
            }
            if (info.ChartType == ChartType.Dot)
            {
                res = CreatePointSeries(info);
            }

            XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)res.View;

            if (info.PanelIndex > 0)
            {
                view.Pane = ((XYDiagram2D)Chart.Diagram).Panes[info.PanelIndex - 1];
            }
            return(res);
        }
Exemplo n.º 3
0
 public void UpdateIndicator(ChartControl chart, XYDiagramSeriesViewBase seriesView, bool indicatorVisible)
 {
     if (this.indicatorVisible != indicatorVisible)
     {
         if (indicatorVisible)
         {
             Indicator indicator = CreateIndicator();
             if (indicator != null)
             {
                 indicator.Tag          = GetHashCode();
                 indicator.Name         = IndicatorName;
                 indicator.ShowInLegend = true;
                 seriesView.Indicators.Add(indicator);
                 if (indicator is SeparatePaneIndicator)
                 {
                     ChartHelper.InitializeSeparatePaneIndicator(chart, (SeparatePaneIndicator)indicator);
                 }
             }
         }
         else
         {
             int tag = GetHashCode();
             foreach (Indicator indicator in seriesView.Indicators)
             {
                 if (indicator.Tag is int && (int)indicator.Tag == tag)
                 {
                     ChartHelper.RemoveIndicator(chart, seriesView, indicator);
                     break;
                 }
             }
         }
         this.indicatorVisible = indicatorVisible;
     }
 }
Exemplo n.º 4
0
        public void AddSeriesPaneToChart(string textFormatString, object[] values, string[] labelStrings, Color color)
        {
            object[] array  = values;
            string[] months = labelStrings;
            Series   series = GetSeries(textFormatString, color, array, months);

            int seriesPosition           = chartControl1.Series.Add(series);
            XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)series.View;

            XYDiagram diag         = chartControl1.Diagram as XYDiagram;
            int       axesPosition = diag.SecondaryAxesY.Add(new SecondaryAxisY());

            if (seriesPosition > 0)
            {
                XYDiagramPane pane = new XYDiagramPane();
                pane.SizeMode = PaneSizeMode.UseWeight;

                diag.Panes.Add(pane);
                diag.SecondaryAxesY[axesPosition].Alignment         = AxisAlignment.Near;
                diag.SecondaryAxesY[axesPosition].GridLines.Visible = true;
                view.AxisY = diag.SecondaryAxesY[axesPosition];
                view.Pane  = pane;
            }
            else
            {
                diag.SecondaryAxesY[seriesPosition].Visible = false;
                view.AxisX.Label.Angle = 90;
            }

            diag.EnableZooming   = true;
            diag.EnableScrolling = true;

            chartControl1.Height += 400;
        }
Exemplo n.º 5
0
        public void barchart_BoundDataChanged(object sender, EventArgs e)
        {
            var chart = (WebChartControl)sender;


            for (int i = 0; i < chart.Series.Count(); i++)
            {
                var x     = chart.Series[i];
                var sname = x.Name;

                Debug.WriteLine(String.Format("sname={0}", sname));

                //Color mycolor = _settings.colors[i % _settings.colors.Count];

                //((SideBySideBarSeriesView)chart.Series[i].View).Color = mycolor;
                //((SideBySideBarSeriesView)chart.Series[i].View).FillStyle.FillMode = FillMode.Solid;
            }

            //https://documentation.devexpress.com/WindowsForms/4942/Controls-and-Libraries/Chart-Control/Examples/Chart-Elements/How-to-Display-Automatically-Created-Series-in-Separate-Panes


            if (chart.Series.Count > 0)
            {
                // Obtain a diagram and clear its collection of panes.
                XYDiagram diagram = (XYDiagram)chart.Diagram;
                diagram.Panes.Clear();
                // Create a pane for each series.
                for (int i = 1; i < chart.Series.Count; i++)
                {
                    XYDiagramPane pane = new XYDiagramPane("The Pane's Name");
                    diagram.Panes.Add(pane);
                    XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chart.Series[i].View;

                    //view.Indicators.Add(new DataSourceBasedErrorBars
                    //{
                    //	Direction = ErrorBarDirection.Both,
                    //	Name = "SD",
                    //	Color = Color.Black,
                    //	PositiveErrorDataMember = "SD",
                    //	NegativeErrorDataMember = "SD"
                    //});

                    view.Pane = pane;

                    diagram.PaneLayout.Direction = PaneLayoutDirection.Horizontal;
                }
            }
        }
Exemplo n.º 6
0
            public DXCheckItemMainSecondaryAxisY(ChartControl chartControl)
                : base(chartControl, Strings.SecondaryAxes.secondaryAxisY)
            {
                XYDiagramSeriesViewBase secondSeriesView = chartControl.Series.Count > 1 ? chartControl.Series[1].View as XYDiagramSeriesViewBase : null;

                if (SecondaryAxisY != null && secondSeriesView != null && secondSeriesView.AxisY == SecondaryAxisY)
                {
                    Checked = SecondaryAxisY.Visible;
                    Enabled = true;
                }
                else
                {
                    Checked = false;
                    Enabled = false;
                }
            }
Exemplo n.º 7
0
 public void AssignSeriesToPane(ScatterplotSeries scatseries, List <string> panenames)
 {
     foreach (string p in panenames)
     {
         // check whether series should be added to this pane.
         for (int i = 0; i < chart.Series.Count; i++)
         {
             if (scatseries.list_dxseriespoints[i].panename == p)
             {
                 XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chart.Series[i].View;
                 view.Pane = xydiagram.Panes[p];
             }
         }
         xydiagram.DefaultPane.Visibility = ChartElementVisibility.Hidden;
     }
 }
        private void OnChartBoundDataChanged(object sender, EventArgs e)
        {
            ChartControl chart = (ChartControl)sender;

            if (chart.Series.Count > 0)
            {
                XYDiagram diagram = (XYDiagram)chart.Diagram;
                diagram.Panes.Clear();
                for (int i = 1; i < chart.Series.Count; i++)
                {
                    XYDiagramPane pane = new XYDiagramPane(String.Format(@"Pane {0}", i));
                    diagram.Panes.Add(pane);
                    XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chart.Series[i].View;
                    view.Pane = pane;
                }
            }
        }
Exemplo n.º 9
0
        private void SetChartType()
        {
            XYDiagram diagram = (XYDiagram)chartControl1.Diagram;

            if (rbChartType.SelectedIndex == 0)
            {
                diagram.Panes.Clear();
                for (int i = 1; i < chartControl1.Series.Count; i++)
                {
                    XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chartControl1.Series[i].View;
                    view.Pane = diagram.DefaultPane;
                    chartControl1.Series[i].CheckedInLegend   = true;
                    chartControl1.Series[i].CheckableInLegend = true;
                }
            }
            if (rbChartType.SelectedIndex > 0 && chartControl1.Series.Count > 0)
            {
                diagram.Panes.Clear();
                for (int i = 1; i < chartControl1.Series.Count; i++)
                {
                    XYDiagramPane pane = new XYDiagramPane($@"Pane {i}");
                    diagram.Panes.Add(pane);

                    XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chartControl1.Series[i].View;
                    view.Pane = pane;
                    chartControl1.Series[i].CheckedInLegend   = true;
                    chartControl1.Series[i].CheckableInLegend = true;
                }
            }

            if (rbChartType.SelectedIndex == 1)
            {
                diagram.PaneLayout.Direction      = PaneLayoutDirection.Vertical;
                diagram.PaneLayout.AutoLayoutMode = PaneAutoLayoutMode.Linear;
            }
            else if (rbChartType.SelectedIndex == 2)
            {
                diagram.PaneLayout.Direction      = PaneLayoutDirection.Horizontal;
                diagram.PaneLayout.AutoLayoutMode = PaneAutoLayoutMode.Linear;
            }
            else if (rbChartType.SelectedIndex == 3)
            {
                diagram.PaneLayout.AutoLayoutMode = PaneAutoLayoutMode.Grid;
            }
        }
Exemplo n.º 10
0
        protected virtual Series CreateSeries(StrategyDataItemInfo info)
        {
            CheckAddPanel(info);
            Series res = null;

            if (info.ChartType == ChartType.ConstantX || info.ChartType == ChartType.ConstantY)
            {
                CreateConstantLines(info);
                return(null);
            }
            if (info.ChartType == ChartType.CandleStick)
            {
                res = CreateCandleStickSeries(info);
            }
            if (info.ChartType == ChartType.Line || info.ChartType == ChartType.StepLine)
            {
                res = CreateLineSeries(info);
            }
            if (info.ChartType == ChartType.Bar)
            {
                res = CreateBarSeries(info);
            }
            if (info.ChartType == ChartType.Area || info.ChartType == ChartType.StepArea)
            {
                res = CreateAreaSeries(info);
            }
            if (info.ChartType == ChartType.Dot)
            {
                res = CreatePointSeries(info);
            }

            XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)res.View;

            if (info.PanelName != "Default")
            {
                view.Pane  = ((XYDiagram)Chart.Diagram).Panes[info.PanelName];
                view.AxisY = ((XYDiagram)Chart.Diagram).SecondaryAxesY[info.AxisYName];
                res.Legend = Chart.Legends[info.PanelName];
            }
            else
            {
            }

            return(res);
        }
        private void bsSeries_GetItemData(object sender, EventArgs e)
        {
            if (this.bsSeries.ItemLinks.Count != 0)
            {
                return;
            }
            XYDiagram dg = (XYDiagram)this.chartControl.Diagram;

            if (dg == null)
            {
                return;
            }
            List <XYDiagramPaneBase> panes = new List <XYDiagramPaneBase>();

            panes.Add(dg.DefaultPane);
            foreach (XYDiagramPaneBase pane in dg.Panes)
            {
                panes.Add(pane);
            }
            foreach (XYDiagramPaneBase item in panes)
            {
                BarSubItem paneMenu = new BarSubItem(this.barManager1, item.Name);
                this.bsSeries.ItemLinks.Add(paneMenu);
                foreach (Series s in this.chartControl.Series)
                {
                    XYDiagramSeriesViewBase v = (XYDiagramSeriesViewBase)s.View;
                    if (v.Pane != item)
                    {
                        continue;
                    }

                    BarCheckItem ch = new BarCheckItem(this.barManager1)
                    {
                        Caption = s.Name, Checked = true
                    };
                    ch.AllowStubGlyph      = DefaultBoolean.False;
                    ch.CloseSubMenuOnClick = false;
                    ch.Tag             = s;
                    ch.CheckedChanged += OnSeriesCheckedChanged;
                    paneMenu.ItemLinks.Add(ch);
                }
            }
        }
Exemplo n.º 12
0
        public static void RemoveIndicator(ChartControl chart, XYDiagramSeriesViewBase view, Indicator indicator)
        {
            SeparatePaneIndicator separatePaneIndicator = indicator as SeparatePaneIndicator;

            if (separatePaneIndicator != null)
            {
                foreach (Legend legend in chart.Legends)
                {
                    if (legend.Tag == separatePaneIndicator.Tag)
                    {
                        chart.Legends.Remove(legend);
                        break;
                    }
                }
                XYDiagram diagram = chart.Diagram as XYDiagram;
                if (diagram != null)
                {
                    foreach (XYDiagramPane pane in diagram.Panes)
                    {
                        if (pane.Tag == separatePaneIndicator.Tag)
                        {
                            diagram.Panes.Remove(pane);
                            break;
                        }
                    }
                    foreach (SecondaryAxisY axisY in diagram.SecondaryAxesY)
                    {
                        if (axisY.Tag == separatePaneIndicator.Tag)
                        {
                            diagram.SecondaryAxesY.Remove(axisY);
                            break;
                        }
                    }
                }
            }
            view.Indicators.Remove(indicator);
        }
        private void OnFormLoad(object sender, EventArgs e)
        {
            Series year2003Series = new Series();

            year2003Series.Name = "2003";
            year2003Series.ArgumentDataMember  = "Region";
            year2003Series.ValueDataMembers[0] = "GSP";
            year2003Series.FilterString        = @"[Year] == 2003";

            Series year2004Series = new Series();

            year2004Series.Name = "2004";
            year2004Series.ArgumentDataMember  = "Region";
            year2004Series.ValueDataMembers[0] = "GSP";
            year2004Series.FilterString        = @"[Year] == 2004";

            chartControl.Series.AddRange(year2003Series, year2004Series);

            XYDiagram     diagram    = (XYDiagram)chartControl.Diagram;
            XYDiagramPane secondPane = new XYDiagramPane("Second Pane");

            diagram.Panes.Add(secondPane);

            Legend secondLegend = new Legend("Second Legend")
            {
                DockTarget          = secondPane,
                AlignmentHorizontal = LegendAlignmentHorizontal.Right,
                AlignmentVertical   = LegendAlignmentVertical.Top
            };

            chartControl.Legends.Add(secondLegend);

            XYDiagramSeriesViewBase xyView = (XYDiagramSeriesViewBase)year2004Series.View;

            year2004Series.Legend = secondLegend;
            xyView.Pane           = secondPane;
        }
Exemplo n.º 14
0
        public void CreateBarchart(DescStats statstable)         //, string xaxisvar, string colorsvar, string maintitle )
        {
            chart.AxisWholeRangeChanged += LogAxesRangeWhole;
            //chart.AxisVisualRangeChanged += LogAxesRangeVisual;


            string mycolorvar;

            if (_settings.colorvar == "none")
            {
                mycolorvar = (statstable.dt.ColumnNames().Contains("All")) ? "All" : _settings.xaxisvar;
            }
            else
            {
                mycolorvar = _settings.colorvar;
            }



            List <string> colors_levels = statstable.dt.AsEnumerable().Select(x => x.Field <string>(mycolorvar)).Distinct().ToList();
            List <string> xaxis_levels  = statstable.dt.AsEnumerable().Select(x => x.Field <string>(_settings.xaxisvar)).Distinct().ToList();
            List <string> panes_levels  = new List <string>();

            if (_settings.panelvar != "none")
            {
                panes_levels = statstable.dt.AsEnumerable().Select(x => x.Field <string>(_settings.panelvar)).Distinct().ToList();
                panes_levels.Sort();
            }


            //for (int i = 0; i < colors_levels.Count; i++)
            //{
            //	string current_color_lev = colors_levels[i];
            //}


            foreach (Series ser in chart.Series)
            {
                Debug.WriteLine(String.Format("arg data member:[{0}] color data member:[{1}]", ser.ArgumentDataMember, ser.ColorDataMember));
            }


            BarchartSeries barseries = new BarchartSeries(statstable.dt, _settings.xaxisvar, _settings.colorvar, _settings.panelvar, _settings.colors, colors_levels);

            foreach (DxSeriesPoints sp in barseries.list_dxseriespoints)
            {
                Series s = new Series();
                s.Points.AddRange(sp.seriesPoints);
                SideBySideBarSeriesView vw = new SideBySideBarSeriesView();
                s.View = vw;

                var thesd = sp.seriesPointsSD[0].Values[0];

                vw.Indicators.Add(new FixedValueErrorBars
                {
                    Direction     = ErrorBarDirection.Both,
                    Name          = "SD",
                    Color         = Color.Black,
                    PositiveError = thesd,
                    NegativeError = thesd
                });

                chart.Series.Add(s);
            }

            Debug.WriteLine(String.Format("***************************** INIT   # of Panes: {0}", xydiagram.Panes.Count));


            //Additional Panes
            if (panes_levels.Count > 0)
            {
                xydiagram.Panes.Clear();
                Debug.WriteLine(String.Format("***************************** After CLEAR # of Panes: {0}", xydiagram.Panes.Count));
                foreach (string p in panes_levels)
                {
                    // Obtain a diagram and clear its collection of panes.
                    XYDiagramPane pane = new XYDiagramPane(p);
                    xydiagram.Panes.Add(pane);
                    pane.Title.Text                = p;
                    pane.Title.Visibility          = DefaultBoolean.True;
                    xydiagram.PaneLayout.Direction = _settings.panesLayoutDirection;                     // PaneLayoutDirection.Horizontal;
                    Debug.WriteLine(String.Format("**********************************   # of Panes: {0} {1}", xydiagram.Panes.Count, p));

                    // check whether series should be added to this pane.
                    for (int i = 0; i < chart.Series.Count; i++)
                    {
                        // if (sps[i].panename == p)
                        if (barseries.list_dxseriespoints[i].panename == p)
                        {
                            XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chart.Series[i].View;
                            view.Pane = xydiagram.Panes[p];
                        }
                    }

                    xydiagram.DefaultPane.Visibility = ChartElementVisibility.Hidden;
                }
            }
            //No Additional Panes
            else
            {
                for (int i = 0; i < chart.Series.Count; i++)
                {
                    XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chart.Series[i].View;
                    view.Pane = xydiagram.DefaultPane;
                }
            }

            chart.DataBind();


            //Adjust axis range if needed
            if (_settings.miny != -999 && _settings.maxy != -999)
            {
                double y1 = _settings.miny;
                double y2 = _settings.maxy;
                //diag.AxisY.VisualRange.SetMinMaxValues(y1, y2);
                xydiagram.AxisY.WholeRange.SetMinMaxValues(y1, y2);
                xydiagram.AxisY.VisualRange.SetMinMaxValues(y1, y2);
            }


            chart.Width  = _settings.W;
            chart.Height = _settings.H;

            #region Titles
            if (_settings.numvars.Count == 1)
            {
                AddTitles(_settings.title, _settings.subtitle, "", String.Format("{0} Mean (SD)", _settings.numvars[0]));
            }
            else
            {
                AddTitles(_settings.title, _settings.subtitle, "", "Mean (SD)");
            }
            #endregion

            chart.BorderOptions.Color = Color.White;


            this.LegendByColorLevels(_settings.colors, colors_levels);

            chart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
        }
Exemplo n.º 15
0
        public void Draw2PaneDiagram(ChartControl chartControl, DataTable dt, string[] fieldN, string[] seriesN, string axisXN, string title) //将图形分为两个窗格显示
        {
            for (int i = 0; i < fieldN.Count(); i++)
            {
                Series series = new Series(seriesN[i], ViewType.Line);
                series.DataSource         = dt;
                series.ArgumentScaleType  = ScaleType.DateTime;                                                    //x轴参数类型
                series.ArgumentDataMember = axisXN;                                                                //x轴获取指定字段的列
                series.ValueDataMembers.AddRange(fieldN[i]);                                                       //y轴获取指定字段的列
                ((LineSeriesView)series.View).Color = COLORS[i];
                chartControl.Series.Add(series);
            }

            XYDiagram diagram = (XYDiagram)chartControl.Diagram;

            diagram.Panes.Clear();
            XYDiagramPane pane = new XYDiagramPane();

            diagram.Panes.Add(pane);

            for (int i = chartControl.Series.Count / 2; i < chartControl.Series.Count; i++)                     //将另一半折线放入另一窗格中
            {
                XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chartControl.Series[i].View;
                view.Pane = pane;
            }

            diagram.AxisX.SetVisibilityInPane(true, diagram.DefaultPane);                                       //设置默认显示的坐标轴
            diagram.PaneDistance        = 5;
            diagram.PaneLayoutDirection = PaneLayoutDirection.Horizontal;                                       //水平方向放置

            diagram.AxisX.DateTimeScaleOptions.MeasureUnit   = DateTimeMeasureUnit.Hour;                        //最小刻度
            diagram.AxisX.DateTimeScaleOptions.GridAlignment = DateTimeGridAlignment.Day;                       //最小显示刻度

            if (dt.Rows.Count > 0 && !dt.Rows[dt.Rows.Count - 1].IsNull(fieldN[0]))
            {
                int i = 0;
                while (dt.Rows[i].IsNull(fieldN[0]))
                {
                    i++;
                }
                if (Convert.ToInt32(dt.Rows[dt.Rows.Count - 1][fieldN[0]]) - Convert.ToInt32(dt.Rows[i][fieldN[0]]) < 3) //如果两折线的值相差不大,那么缩小y轴范围
                {
                    diagram.AxisY.WholeRange.MinValue = Convert.ToInt32(dt.Rows[i][fieldN[0]]) - 2;                      //y轴起始刻度
                    diagram.AxisY.WholeRange.MaxValue = Convert.ToInt32(dt.Rows[dt.Rows.Count - 1][fieldN[0]]) + 1;
                }
                else
                {
                    diagram.AxisY.WholeRange.MinValue = Convert.ToInt32(dt.Rows[i][fieldN[0]]) - 7;
                    diagram.AxisY.WholeRange.MaxValue = Convert.ToInt32(dt.Rows[dt.Rows.Count - 1][fieldN[0]]) + 5;
                }
            }

            diagram.AxisX.DateTimeOptions.Format       = DateTimeFormat.Custom;
            diagram.AxisX.DateTimeOptions.FormatString = "yyyy-MM-dd HH:mm";

            diagram.AxisX.Title.Visible = true;
            diagram.AxisY.Title.Visible = true;

            if (seriesN[0].Contains("水位"))
            {
                diagram.AxisY.Title.Text = "水位(m)";
            }
            else if (seriesN[0].Contains("流量"))
            {
                diagram.AxisY.Title.Text = "流量(m³/s)";
            }
            else if (seriesN[0].Contains("水量"))
            {
                diagram.AxisY.Title.Text = "水量(m³)";
            }
            diagram.AxisX.Title.Text = "监测时间";

            diagram.AxisY.Title.Alignment = StringAlignment.Far;
            diagram.AxisY.Title.Visible   = true;
            diagram.AxisY.Title.Font      = new Font("宋体", 9.0f);
            diagram.AxisX.Title.Alignment = StringAlignment.Far;
            diagram.AxisX.Title.Visible   = true;
            diagram.AxisX.Title.Font      = new Font("宋体", 9.0f);

            ((XYDiagram)chartControl.Diagram).EnableAxisXZooming   = true;                                         //允许x轴缩放
            ((XYDiagram)chartControl.Diagram).EnableAxisXScrolling = true;                                         //允许x轴移动
            chartControl.CrosshairOptions.ShowArgumentLabels       = true;                                         //移动鼠标时动态显示Y轴数据标签
            chartControl.CrosshairOptions.ShowArgumentLine         = true;                                         //显示Y轴线
            chartControl.CrosshairOptions.ArgumentLineColor        = Color.Blue;
            chartControl.Legend.Visibility          = DevExpress.Utils.DefaultBoolean.True;                        //增加示意图
            chartControl.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Left;

            chartControl.Titles.Add(new ChartTitle());                                                             //增加表名
            chartControl.Titles[0].Text = title;
        }
        protected virtual Series CreateSeries(StrategyDataItemInfo info)
        {
            CheckAddPanel(info);
            Series res = null;

            if (info.ChartType == ChartType.ConstantX || info.ChartType == ChartType.ConstantY)
            {
                CreateConstantLines(info);
                return(null);
            }
            if (info.ChartType == ChartType.CandleStick)
            {
                res = CreateCandleStickSeries(info);
            }
            if (info.ChartType == ChartType.Line || info.ChartType == ChartType.StepLine)
            {
                res = CreateLineSeries(info);
            }
            if (info.ChartType == ChartType.Bar)
            {
                res = CreateBarSeries(info);
            }
            if (info.ChartType == ChartType.Area || info.ChartType == ChartType.StepArea)
            {
                res = CreateAreaSeries(info);
            }
            if (info.ChartType == ChartType.Dot)
            {
                res = CreatePointSeries(info);
            }

            if (res != null)
            {
                if (res.Points != null && res.Points.Count > BigDataCount)
                {
                    Chart.SelectionMode     = ElementSelectionMode.None;
                    Chart.RuntimeHitTesting = false;
                }
                res.DataSourceSorted    = true;
                res.SeriesPointsSorting = SortingMode.None;
            }
            IResizeableArray array = res.DataSource as IResizeableArray;

            if (array != null && array.Count > BigDataCount)  // optimization
            {
                PointSeriesView view2 = res.View as PointSeriesView;
                if (view2 != null)
                {
                    view2.AggregateFunction = SeriesAggregateFunction.None;
                }
            }
            XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)res.View;

            if (info.PanelName != "Default")
            {
                view.Pane  = ((XYDiagram)Chart.Diagram).Panes[info.PanelName];
                view.AxisY = ((XYDiagram)Chart.Diagram).SecondaryAxesY[info.AxisYName];
                if (((XYDiagram)Chart.Diagram).SecondaryAxesX[info.AxisXName] != null)
                {
                    view.AxisX = ((XYDiagram)Chart.Diagram).SecondaryAxesX[info.AxisXName];
                }
                res.Legend = Chart.Legends[info.PanelName];
            }
            else
            {
            }

            return(res);
        }
Exemplo n.º 17
0
        private void addNewPic(DataTable dt)
        {
            // Create a chart.
            //

            ChartControl chart = chartControl2;//= chart;//= new ChartControl();

            chart.Series.Clear();
            // Create an empty Bar series and add it to the chart.
            Series series = new Series("裂缝半长", ViewType.Spline);

            chart.Series.Add(series);

            // Generate a data table and bind the series to it.
            series.DataSource = dt;

            // Specify data members to bind the series.
            series.ArgumentScaleType  = ScaleType.Numerical;
            series.ArgumentDataMember = "time";
            series.ValueScaleType     = ScaleType.Numerical;
            series.ValueDataMembers.AddRange(new string[] { "L" });
            ((PointSeriesView)series.View).Color = Color.FromArgb(125, Color.Green);
            // Create an empty Bar series and add it to the chart.

            Series series1 = new Series("缝宽", ViewType.Spline);

            chart.Series.Add(series1);

            // Generate a data table and bind the series to it.
            series1.DataSource = dt;

            // Specify data members to bind the series.
            series1.ArgumentScaleType  = ScaleType.Numerical;
            series1.ArgumentDataMember = "time";
            series1.ValueScaleType     = ScaleType.Numerical;
            series1.ValueDataMembers.AddRange(new string[] { "W0" });
            ((PointSeriesView)series1.View).Color = Color.FromArgb(125, Color.Red);



            chart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;


            //SecondaryAxisX myAxisX = new SecondaryAxisX("watercutx");


            chart.CrosshairOptions.ShowArgumentLabels = true;
            chart.CrosshairOptions.ShowArgumentLine   = true;
            chart.CrosshairOptions.ShowValueLabels    = true;
            chart.CrosshairOptions.ShowValueLine      = true;
            chart.CrosshairOptions.ValueLineColor     = Color.DarkBlue;

            chart.CrosshairOptions.ArgumentLineColor   = Color.DarkBlue;
            chart.CrosshairOptions.ShowCrosshairLabels = false;
            //series1.CrosshairLabelPattern = series1.Name + ":{V:F0}";
            //series2.CrosshairLabelPattern = series1.Name + ":{V:F0}";
            // chart.CrosshairOptions.sh = true;

            //series2.CrosshairOptions.ShowArgumentLabels  rosshairOptions.ShowValueLabels
            //  series2.CrosshairOptions.sho  CrosshairOptions.ShowValueLine,
            //this.Controls.Add();



            XYDiagram diagram = (XYDiagram)chart.Diagram;

            diagram.Panes.Clear();
            diagram.SecondaryAxesY.Clear();
            diagram.SecondaryAxesX.Clear();

            // Enable the diagram's scrolling.
            diagram.EnableAxisXScrolling = false;
            diagram.EnableAxisYScrolling = false;

            // Customize the appearance of the axes' grid lines.
            diagram.AxisX.GridLines.Visible      = true;
            diagram.AxisX.GridLines.MinorVisible = false;

            diagram.AxisY.GridLines.Visible      = true;
            diagram.AxisY.GridLines.MinorVisible = true;

            //diagram.AxisY.Range.SetInternalMinMaxValues(1, 12);
            // Customize the appearance of the X-axis title.
            diagram.AxisX.Title.Visibility            = DevExpress.Utils.DefaultBoolean.True;
            diagram.AxisX.Title.Alignment             = StringAlignment.Center;
            diagram.AxisX.Title.Text                  = "时间(min)";
            diagram.AxisX.Title.TextColor             = Color.Black;
            diagram.AxisX.Title.Antialiasing          = true;
            diagram.AxisX.Title.Font                  = new Font("Microsoft YaHei", 10);
            diagram.AxisX.WholeRange.SideMarginsValue = 0;
            // Customize the appearance of the Y-axis title.
            diagram.AxisY.Title.Visibility   = DevExpress.Utils.DefaultBoolean.True;
            diagram.AxisY.Title.Alignment    = StringAlignment.Center;
            diagram.AxisY.Title.Text         = "缝宽(mm)";
            diagram.AxisY.Title.TextColor    = Color.Black;
            diagram.AxisY.Title.Antialiasing = true;
            diagram.AxisY.Title.Font         = new Font("Microsoft YaHei", 10);
            XYDiagramPane pane = new XYDiagramPane("留白");

            diagram.Panes.Add(pane);
            XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chart.Series[0].View;
            int axesPosition             = diagram.SecondaryAxesY.Add(new SecondaryAxisY());

            diagram.SecondaryAxesY[axesPosition].Alignment              = AxisAlignment.Near;
            diagram.SecondaryAxesY[axesPosition].GridLines.Visible      = true;
            diagram.SecondaryAxesY[axesPosition].GridLines.MinorVisible = true;
            view.AxisY = diagram.SecondaryAxesY[axesPosition];
            int axesPosition2 = diagram.SecondaryAxesX.Add(new SecondaryAxisX());

            diagram.SecondaryAxesX[axesPosition2].Alignment         = AxisAlignment.Near;
            diagram.SecondaryAxesX[axesPosition2].GridLines.Visible = true;

            view.AxisX = diagram.SecondaryAxesX[axesPosition2];
            view.AxisX.WholeRange.SideMarginsValue              = 0;
            diagram.SecondaryAxesX[axesPosition2].Title.Text    = "时间(min)";
            diagram.SecondaryAxesY[axesPosition].Title.Text     = "缝长(m)";
            diagram.SecondaryAxesX[axesPosition2].Title.Font    = new Font("Microsoft YaHei", 10, FontStyle.Bold);
            diagram.SecondaryAxesY[axesPosition].Title.Font     = new Font("Microsoft YaHei", 10, FontStyle.Bold);
            diagram.SecondaryAxesX[axesPosition2].Title.Visible = true;
            diagram.SecondaryAxesY[axesPosition].Title.Visible  = true;
            diagram.SecondaryAxesX[axesPosition2].Title.Font    = new Font("Microsoft YaHei", 10);
            diagram.SecondaryAxesY[axesPosition2].Title.Font    = new Font("Microsoft YaHei", 10);
            view.Pane = pane;
        }