예제 #1
0
 static void PrepareXYDiagram3D(XYDiagram3D diagram)
 {
     if (diagram == null)
     {
         return;
     }
     diagram.AxisX               = new AxisX3D();
     diagram.AxisX.Label         = new AxisLabel();
     diagram.AxisX.Label.Visible = false;
 }
 static void PrepareXYDiagram3D(XYDiagram3D diagram)
 {
     if (diagram == null)
     {
         return;
     }
     diagram.AxisX = new AxisX3D {
         Label = new AxisLabel {
             Visible = false
         }
     };
 }
예제 #3
0
        private void LoadChart(ViewType viewType)
        {
            this.chartControl1.Series.Clear();
            chartTitle = new ChartTitle();
            if (this._statsType == "pipeline")
            {
                chartTitle.Text = "管线长度统计图  单位:米";
            }
            else
            {
                chartTitle.Text = "管点数量统计图  单位:个";
            }

            chartTitle.Font = new System.Drawing.Font("宋体", 15f);
            this.chartControl1.Titles.Clear();
            this.chartControl1.Titles.Add(chartTitle);


            if (_dtstats != null)
            {
                try
                {
                    _dtshow = ConvertDTForChart(_dtstats);
                    if (viewType == ViewType.Pie)
                    {
                        try
                        {
                            //将_dtshow转置

                            DataTable _dtpie = new DataTable();
                            _dtpie.Columns.Add(_dtshow.Columns[0].ColumnName);
                            for (int i = 0; i < _dtshow.Rows.Count; i++)
                            {
                                _dtpie.Columns.Add(_dtshow.Rows[i][0].ToString(), typeof(double));
                            }
                            for (int i = 1; i < _dtshow.Columns.Count; i++)
                            {
                                DataRow dr = _dtpie.NewRow();
                                dr[0] = _dtshow.Columns[i].ColumnName.ToString();
                                for (int j = 0; j < _dtshow.Rows.Count; j++)
                                {
                                    double temp = 0;
                                    double.TryParse(_dtshow.Rows[j][i].ToString(), out temp);
                                    dr[j + 1] = temp;
                                    //if (_dtshow.Rows[j][i].ToString() == null)
                                    //    dr[j + 1] = 0.0;
                                    //else
                                    //    dr[j + 1] = _dtshow.Rows[j][i];
                                }
                                _dtpie.Rows.Add(dr);
                            }
                            for (int i = 1; i < _dtpie.Columns.Count; i++)
                            {
                                int    index  = this.chartControl1.Series.Add(_dtpie.Columns[i].ColumnName, viewType);
                                Series series = this.chartControl1.Series[index];
                                series.DataSource         = _dtpie;
                                series.Visible            = true;
                                series.ArgumentScaleType  = ScaleType.Qualitative;
                                series.ValueScaleType     = ScaleType.Numerical;
                                series.ArgumentDataMember = _dtpie.Columns[0].ColumnName;
                                series.ValueDataMembers.AddRange(new string[]
                                {
                                    _dtpie.Columns[i].ColumnName
                                });
                                // 显示标签
                                series.LabelsVisibility             = DevExpress.Utils.DefaultBoolean.True;
                                series.Label.PointOptions.PointView = PointView.ArgumentAndValues;//显示表示的信息和数据
                                series.LegendPointOptions.PointView = PointView.Argument;
                                //series.Label.PointOptions.ValueNumericOptions.Format = NumericFormat.Percent;  //用百分比表示
                                //series.Label.PointOptions.ValueNumericOptions.Precision = 2;
                                //显示一个图例
                                if (i > 1)
                                {
                                    series.ShowInLegend = false;
                                }
                            }
                        }
                        catch { }
                    }
                    else if (viewType == ViewType.Bar)
                    {
                        for (int i = 1; i < _dtshow.Columns.Count; i++)
                        {
                            int    index  = this.chartControl1.Series.Add(_dtshow.Columns[i].ColumnName, viewType);
                            Series series = this.chartControl1.Series[index];
                            series.DataSource         = _dtshow;
                            series.Visible            = true;
                            series.ArgumentScaleType  = ScaleType.Qualitative;
                            series.ValueScaleType     = ScaleType.Numerical;
                            series.ArgumentDataMember = _dtshow.Columns[0].ColumnName;
                            series.ValueDataMembers.AddRange(new string[]
                            {
                                _dtshow.Columns[i].ColumnName
                            });
                            // 显示标签
                            //series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
                            series.Label.PointOptions.PointView = PointView.ArgumentAndValues;               //显示表示的信息和数据
                            series.Label.PointOptions.ValueNumericOptions.Format    = NumericFormat.Percent; //用百分比表示
                            series.Label.PointOptions.ValueNumericOptions.Precision = 2;
                        }
                    }
                    else if (viewType == ViewType.Line)
                    {
                        for (int i = 1; i < _dtshow.Columns.Count; i++)
                        {
                            int    index  = this.chartControl1.Series.Add(_dtshow.Columns[i].ColumnName, viewType);
                            Series series = this.chartControl1.Series[index];
                            series.DataSource         = _dtshow;
                            series.Visible            = true;
                            series.ArgumentScaleType  = ScaleType.Qualitative;
                            series.ValueScaleType     = ScaleType.Numerical;
                            series.ArgumentDataMember = _dtshow.Columns[0].ColumnName;
                            series.ValueDataMembers.AddRange(new string[]
                            {
                                _dtshow.Columns[i].ColumnName
                            });
                        }
                    }
                    else if (viewType == ViewType.Bar3D)
                    {
                        for (int i = 1; i < _dtshow.Columns.Count; i++)
                        {
                            int    index  = this.chartControl1.Series.Add(_dtshow.Columns[i].ColumnName, viewType);
                            Series series = this.chartControl1.Series[index];
                            series.DataSource         = _dtshow;
                            series.Visible            = true;
                            series.ArgumentScaleType  = ScaleType.Qualitative;
                            series.ValueScaleType     = ScaleType.Numerical;
                            series.ArgumentDataMember = _dtshow.Columns[0].ColumnName;
                            series.ValueDataMembers.AddRange(new string[]
                            {
                                _dtshow.Columns[i].ColumnName
                            });
                            XYDiagram3D xYDiagram3D = this.chartControl1.Diagram as XYDiagram3D;
                            xYDiagram3D.RuntimeRotation    = true;
                            xYDiagram3D.RuntimeScrolling   = true;
                            xYDiagram3D.RuntimeZooming     = true;
                            xYDiagram3D.PerspectiveEnabled = true;
                        }
                    }
                    else if (viewType == ViewType.Line3D)
                    {
                        for (int i = 1; i < _dtshow.Columns.Count; i++)
                        {
                            int    index  = this.chartControl1.Series.Add(_dtshow.Columns[i].ColumnName, viewType);
                            Series series = this.chartControl1.Series[index];
                            series.DataSource         = _dtshow;
                            series.Visible            = true;
                            series.ArgumentScaleType  = ScaleType.Qualitative;
                            series.ValueScaleType     = ScaleType.Numerical;
                            series.ArgumentDataMember = _dtshow.Columns[0].ColumnName;
                            series.ValueDataMembers.AddRange(new string[]
                            {
                                _dtshow.Columns[i].ColumnName
                            });
                            XYDiagram3D xYDiagram3D2 = this.chartControl1.Diagram as XYDiagram3D;
                            xYDiagram3D2.RuntimeRotation    = true;
                            xYDiagram3D2.RuntimeScrolling   = true;
                            xYDiagram3D2.RuntimeZooming     = true;
                            xYDiagram3D2.PerspectiveEnabled = true;
                        }
                    }
                    #region 备用代码

                    /*for (int i = 1; i < _dtshow.Columns.Count; i++)
                     * {
                     *  int index = this.chartControl1.Series.Add(_dtshow.Columns[i].ColumnName, viewType);
                     *  Series series = this.chartControl1.Series[index];
                     *  series.DataSource = _dtshow;
                     *  series.Visible = true;
                     *  series.ArgumentScaleType = ScaleType.Qualitative;
                     *  series.ValueScaleType = ScaleType.Numerical;
                     *  series.ArgumentDataMember = _dtshow.Columns[0].ColumnName;
                     *  series.ValueDataMembers.AddRange(new string[]
                     *  {
                     *      _dtshow.Columns[i].ColumnName
                     *  });
                     *  if (viewType == ViewType.Pie)
                     *  {
                     *      try
                     *      {
                     *          //将_dtshow转置
                     *          DataTable _dtpie = new DataTable();
                     *          _dtpie.Columns.Add(_dtshow.Columns[0].ColumnName);
                     *          foreach (DataRow dr in _dtshow.Rows)
                     *          {
                     *              _dtpie.Columns.Add(dr[_dtshow.Columns[0].ColumnName].ToString());
                     *          }
                     *          for (int j = 1; j < _dtshow.Columns.Count; j++)
                     *          {
                     *              DataRow dr = _dtpie.NewRow();
                     *              dr[_dtshow.Columns[0].ColumnName] = _dtshow.Columns[j].ColumnName;
                     *              int n = 1;
                     *              for (int k = 0; k < _dtshow.Rows.Count; k++)
                     *              {
                     *                  dr[_dtpie.Columns[n].ColumnName] = _dtshow.Rows[k][j].ToString();
                     *                  n++;
                     *              }
                     *              _dtpie.Rows.Add(dr);
                     *          }
                     *
                     *      }
                     *      catch { }
                     *       // 显示标签
                     *      series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
                     *      series.Label.PointOptions.PointView = PointView.ArgumentAndValues;             //显示表示的信息和数据
                     *      //series.Label.PointOptions.ValueNumericOptions.Format = NumericFormat.Percent;  //用百分比表示
                     *      //series.Label.PointOptions.ValueNumericOptions.Precision = 2;
                     *      //显示一个图例
                     *      if (i > 1)
                     *      {
                     *          series.ShowInLegend = false;
                     *      }
                     *  }
                     *  else if(viewType == ViewType.Bar)
                     *  {
                     *      // 显示标签
                     *      //series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
                     *      series.Label.PointOptions.PointView = PointView.ArgumentAndValues;             //显示表示的信息和数据
                     *      series.Label.PointOptions.ValueNumericOptions.Format = NumericFormat.Percent;  //用百分比表示
                     *      series.Label.PointOptions.ValueNumericOptions.Precision = 2;
                     *
                     *
                     *  }
                     *  else if (viewType == ViewType.Bar3D)
                     *  {
                     *
                     *      XYDiagram3D xYDiagram3D = this.chartControl1.Diagram as XYDiagram3D;
                     *      xYDiagram3D.RuntimeRotation = true;
                     *      xYDiagram3D.RuntimeScrolling = true;
                     *      xYDiagram3D.RuntimeZooming = true;
                     *      xYDiagram3D.PerspectiveEnabled = true;
                     *
                     *  }
                     *  else if (viewType == ViewType.Line3D)
                     *  {
                     *      XYDiagram3D xYDiagram3D2 = this.chartControl1.Diagram as XYDiagram3D;
                     *      xYDiagram3D2.RuntimeRotation = true;
                     *      xYDiagram3D2.RuntimeScrolling = true;
                     *      xYDiagram3D2.RuntimeZooming = true;
                     *      xYDiagram3D2.PerspectiveEnabled = true;
                     *  }
                     * }*/
                    #endregion
                }
                catch
                {
                }
            }
        }
        void ChangeDiagram(SeriesTypeItem item)
        {
            if (item == null)
            {
                return;
            }
            chart.Diagram = (Diagram)Activator.CreateInstance(item.DiagramType);
            bool        isAreaFullStackedSeries = false;
            Axis        axisX = null, axisY = null;
            XYDiagram2D diagram2D = chart.Diagram as XYDiagram2D;

            if (diagram2D != null)
            {
                chart.Legend.HorizontalPosition = HorizontalPosition.RightOutside;
                diagram2D.AxisX         = new AxisX2D();
                diagram2D.AxisY         = new AxisY2D();
                axisX                   = diagram2D.AxisX;
                axisY                   = diagram2D.AxisY;
                isAreaFullStackedSeries = item.SeriesType == typeof(AreaFullStackedSeries2D);
            }
            else
            {
                chart.Legend.HorizontalPosition = HorizontalPosition.Right;
                XYDiagram3D diagram3D = chart.Diagram as XYDiagram3D;
                if (diagram3D != null)
                {
                    diagram3D.AxisX          = new AxisX3D();
                    diagram3D.AxisY          = new AxisY3D();
                    axisX                    = diagram3D.AxisX;
                    axisY                    = diagram3D.AxisY;
                    diagram3D.SeriesPadding  = 0.5;
                    diagram3D.SeriesDistance = 1.5;
                    isAreaFullStackedSeries  = item.SeriesType == typeof(AreaFullStackedSeries3D);
                }
            }
            if (axisX != null)
            {
                axisX.Label = new AxisLabel()
                {
                    TextPattern = "{A:m}"
                };
            }
            if (axisY != null)
            {
                if (isAreaFullStackedSeries)
                {
                    axisY.Label = new AxisLabel()
                    {
                        TextPattern = "{VP:P0}"
                    }
                }
                ;
                else
                {
                    axisY.Title         = new AxisTitle();
                    axisY.Title.Content = "Number of visitors";
                }
            }
            Series politicsSeries = (Series)Activator.CreateInstance(item.SeriesType);

            politicsSeries.DisplayName     = "Politics";
            politicsSeries.ValueDataMember = "Politics";
            PrepareSeriesAnimation(politicsSeries, 0);
            Series entertainmentSeries = (Series)Activator.CreateInstance(item.SeriesType);

            entertainmentSeries.DisplayName     = "Entertainment";
            entertainmentSeries.ValueDataMember = "Entertainment";
            PrepareSeriesAnimation(entertainmentSeries, 1);
            Series travelSeries = (Series)Activator.CreateInstance(item.SeriesType);

            travelSeries.DisplayName     = "Travel";
            travelSeries.ValueDataMember = "Travel";
            PrepareSeriesAnimation(travelSeries, 2);
            chart.Diagram.Series.AddRange(new Series[] { politicsSeries, entertainmentSeries, travelSeries });
            foreach (Series series in chart.Diagram.Series)
            {
                ISupportTransparency supportTransparency = series as ISupportTransparency;
                if (supportTransparency != null)
                {
                    supportTransparency.Transparency = 0.5;
                }
                series.Label = new SeriesLabel();
                if (isAreaFullStackedSeries)
                {
                    series.Label.TextPattern = "{VP:P0}";
                }
                series.LabelsVisibility             = cheLabelsVisible.IsChecked.Value;
                series.Label.ResolveOverlappingMode = ResolveOverlappingMode.Default;
                series.ArgumentScaleType            = ScaleType.DateTime;
                series.ArgumentDataMember           = "Date";
                series.DataSource = dataSource;
            }
        }
 private void ChildFormCategorizedByAgeGroup_Load(object sender, EventArgs e)
 {
     AgeGroup = new ChildFormCategorizedByAgeGroup();
     categorizedByAgeModelBindingSource.DataSource = Dao.Sales.GetModelsCategory(DDate);
     diagram = (XYDiagram3D)CategoryAgeChart.Diagram;
 }