C#下利用devexpress中chart插件實現柱狀圖

.Net下各種第三方的Chart圖組件很多,筆者在三維管廊監測中使用的Devexpress插件實現的柱狀圖,效果如下圖: 


具體的方法:
1、在xaml中引入Devexpress插件
xml命名空間引入
xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts"
chart插件引入
<dxc:ChartControl Name="alarmChart" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="4" Width="980" Background="#001f55"  Foreground="#03ffea"  Margin="20,0,20,19">           
        </dxc:ChartControl>
2、柱狀圖所需的數據
數據從數據庫中取出,包括報警類型和報警數量
 DataTable dt;      
            dt = WPFHelp.Instance.DbInit.queryTablesDGSYS("select 報警類型 from STC_報警類型表");
3、創建chart各屬性,並賦值
Brush brush;
            BrushConverter brushConverter = new BrushConverter();
            brush = (Brush)brushConverter.ConvertFromString("#03ffea");//"#17acae");
            Diagram diagram = null;
            diagram = new XYDiagram2D();
            AxisY2D asisy = new AxisY2D();
            AxisTitle asisTitle = new AxisTitle();
            asisTitle.Content = "統計值";
            asisTitle.Foreground = brush;
            asisy.Title = asisTitle;
            asisy.Brush = brush;
            //Y軸刻度尺顏色
            asisy.ActualLabel.Foreground= brush;
            ((XYDiagram2D)diagram).AxisY = asisy;
            _title = "";// "報警統計";

            AxisX2D asisx = new AxisX2D();
            asisx.Brush = brush;
            ((XYDiagram2D)diagram).AxisX = asisx;
            asisx.ActualLabel.Foreground = brush;
            this.LoadChartData(_title, diagram, "直方圖", dt);
4、LoadChartData 函數定義
 private void LoadChartData(string title, Diagram diagram, string seriesType, DataTable dtable)
        {
            try
            {
                if (dtable == null || dtable.Rows.Count == 0)
                {
                    return;
                }

                //透明
                this.alarmChart.Legend = null;
                if (!(diagram is SimpleDiagram2D))
                {
                    Legend legend = new Legend();
                    legend.ReverseItems = true;
                    this.alarmChart.Legend = legend;
                }

                this.alarmChart.Diagram = diagram;
                Title t = new Title();
                t.Content = title;
                t.FontSize = 15;
                Brush brush;
                BrushConverter brushConverter = new BrushConverter();
                brush = (Brush)brushConverter.ConvertFromString("#FF0000");//"#17acae");
                t.Foreground = brush;
                t.HorizontalAlignment = HorizontalAlignment.Center;
                alarmChart.Titles.Clear();
                alarmChart.Titles.Add(t);
                for (int i = 0; i < dtable.Rows.Count; i++)
                {
                    Series series  = new BarSideBySideSeries2D();//= CreateSeries(seriesType);
                    series.DisplayName = dtable.Rows[i][0].ToString();
                    series.AnimationAutoStartMode = AnimationAutoStartMode.SetStartState;
                    //series.FontStyle = new FontStyle();

                    for (int j = 1; j < dtable.Columns.Count; j++)
                    {
                        SeriesPoint seriesPoint = new SeriesPoint();
                        seriesPoint.Argument = dtable.Rows[i][0].ToString();// dtable.Columns[0].ColumnName.ToString();
                        seriesPoint.Value = double.Parse(dtable.Rows[i][j].ToString());
                       
                        series.Points.Add(seriesPoint);
                        
                    }
                    alarmChart.Diagram.Series.Add(series);
                }
                Title t1 = new Title();
                t1.Content = "數據項".PadRight(50);
                t1.FontSize = 14;
                t1.Foreground = brush;
                t1.HorizontalAlignment = HorizontalAlignment.Right;
                t1.Dock = Dock.Bottom;
                alarmChart.Titles.Add(t1);
            }
            catch (Exception ex)
            {
                
            }
        }









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章