DevExpress之ChartControl實現時間軸實例 z


using System;

using System.Data;

using System.Windows.Forms;

using DevExpress.XtraCharts;  
 namespace DevExpressChart

{

    public partial class winDateTime : Form

    {

        public winDateTime()

        {

            InitializeComponent();

        } 
         private void winDateTime_Load(object sender, EventArgs e)

        {

            BuilderDevChart();

        }

        private DataTable CreateChartData()

        {

            DataTable table = new DataTable("Table1");

            table.Columns.Add("Date", typeof(DateTime));

            table.Columns.Add("Value", typeof(Int32));

            table.Rows.Add(new object[] { new DateTime(2014, 5, 21), 10 });

            table.Rows.Add(new object[] { new DateTime(2014, 6, 22), 20 });

            table.Rows.Add(new object[] { new DateTime(2014, 7, 23), 40 });

            table.Rows.Add(new object[] { new DateTime(2014, 8, 24), 20 });

            table.Rows.Add(new object[] { new DateTime(2014, 9, 25), 30 });

            return table;

        }

        private void BuilderDevChart()

        {

            Series _lineSeries = new Series("利潤", ViewType.Line);

            _lineSeries.ArgumentScaleType = ScaleType.DateTime;

            _lineSeries.ArgumentDataMember = "Date";

            _lineSeries.ValueDataMembers[0] = "Value";

            _lineSeries.DataSource = CreateChartData();

            chartControl1.Series.Add(_lineSeries); 
             chartControl1.SetTimeAxisX(DateTimeMeasurementUnit.Month, DateTimeMeasurementUnit.Month, "yyyy-MM");

            //--------------------------------------------------------------- 
             //_lineSeries.ValueScaleType = ScaleType.DateTime;

            //_lineSeries.ArgumentDataMember = "Value";

            //_lineSeries.ValueDataMembers[0] = "Date";

            //_lineSeries.DataSource = CreateChartData();

            //chartControl1.Series.Add(_lineSeries); 
             //XYDiagram _diagram = (XYDiagram)chartControl1.Diagram;

            //_diagram.AxisY.DateTimeMeasureUnit = DateTimeMeasurementUnit.Month;

            //_diagram.AxisY.DateTimeGridAlignment = DateTimeMeasurementUnit.Month;

            //_diagram.AxisY.DateTimeOptions.Format = DateTimeFormat.Custom;

            //_diagram.AxisY.DateTimeOptions.FormatString = "MMMM";

        }

    }

} 

 

using DevExpress.Utils;

using DevExpress.XtraCharts;  
 namespace DevExpressChart

{

    public static class ChartUtils

    {

        /// <summary>

        /// 增加數據篩選

        /// </summary>

        /// <param name="SeriesBase">Series</param>

        /// <param name="columnName">列名稱</param>

        /// <param name="value">列名稱對應的篩選數值</param>

        /// <param name="dataFilterCondition">DataFilterCondition枚舉</param>

        public static void AddDataFilter(this SeriesBase series, string columnName, object value, DataFilterCondition dataFilterCondition)

        {

            series.DataFilters.Add(new DataFilter(columnName, value.GetType().FullName, dataFilterCondition, value));

        } 
         /// <summary>

        /// 設置X軸Lable角度

        /// </summary>

        /// <param name="chart">ChartControl</param>

        /// <param name="angle">角度</param>

        public static void SetXLableAngle(this ChartControl chart, int angle)

        {

            XYDiagram _xyDiagram = (XYDiagram)chart.Diagram;

            if (_xyDiagram != null)

                _xyDiagram.AxisX.Label.Angle = angle;

        }

        /// <summary>

        ///  設置Y軸Lable角度

        /// </summary>

        /// <param name="chart">ChartControl</param>

        /// <param name="angle">角度</param>

        public static void SetYLableAngle(this ChartControl chart, int angle)

        {

            XYDiagram _xyDiagram = (XYDiagram)chart.Diagram;

            _xyDiagram.AxisY.Label.Angle = angle;

        }

        /// <summary>

        /// 設置ColorEach

        /// </summary>

        /// <param name="chart">ChartControl</param>

        /// <param name="colorEach">是否設置成ColorEach</param>

        public static void SetColorEach(this Series series, bool colorEach)

        {

            SeriesViewColorEachSupportBase colorEachView = (SeriesViewColorEachSupportBase)series.View;

            if (colorEachView != null)

            {

                colorEachView.ColorEach = colorEach;

            }

        }

        /// <summary>

        /// 設置是否顯示十字標線

        /// </summary>

        /// <param name="chart">ChartControl</param>

        /// <param name="crosshair">是否顯示十字標線</param>

        public static void SetCrosshair(this ChartControl chart, bool crosshair)

        {

            chart.CrosshairEnabled = crosshair ? DefaultBoolean.True : DefaultBoolean.False;

            chart.CrosshairOptions.ShowArgumentLabels = crosshair;

            chart.CrosshairOptions.ShowArgumentLine = crosshair;

            chart.CrosshairOptions.ShowValueLabels = crosshair;

            chart.CrosshairOptions.ShowValueLine = crosshair;

        }

        /// <summary>

        /// 新增ChartControl的Title文字

        /// </summary>

        /// <param name="chart">ChartControl</param>

        /// <param name="title">Title文字</param>

        public static void AddTitle(this ChartControl chart, string title)

        {

            ChartTitle _title = new ChartTitle();

            _title.Text = title;

            chart.Titles.Add(_title);

        }

        /// <summary>

        /// 餅狀Series設置成百分比顯示

        /// </summary>

        /// <param name="series">Series</param>

        public static void SetPiePercentage(this Series series)

        {

            if (series.View is PieSeriesView)

            {

                ((PiePointOptions)series.PointOptions).PercentOptions.ValueAsPercent = true;

                ((PiePointOptions)series.PointOptions).ValueNumericOptions.Format = NumericFormat.Percent;

                ((PiePointOptions)series.PointOptions).ValueNumericOptions.Precision = 0;

            }

        }

        /// <summary>

        /// 將X軸格式化成時間軸

        /// </summary>

        /// <param name="chart">ChartControl</param>

        /// <param name="dateTimeMeasureUnit">X軸刻度單位</param>

        /// <param name="dateTimeGridAlignment">X軸刻度間距的單位</param>

        public static void SetTimeAxisX(this ChartControl chart, DateTimeMeasurementUnit dateTimeMeasureUnit, DateTimeMeasurementUnit dateTimeGridAlignment)

        {

            XYDiagram _diagram = (XYDiagram)chart.Diagram;

            if (_diagram != null)

            {

                _diagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Month;//X軸刻度單位

                _diagram.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Month;//X軸刻度間距

            }

        }

        /// <summary>

        /// 將X軸格式化成時間軸

        /// </summary>

        /// <param name="chart">ChartControl</param>

        /// <param name="dateTimeMeasureUnit">X軸刻度單位</param>

        /// <param name="dateTimeGridAlignment">X軸刻度間距的單位</param>

        /// <param name="formatString">時間格式;eg:yyyy-MM</param>

        public static void SetTimeAxisX(this ChartControl chart, DateTimeMeasurementUnit dateTimeMeasureUnit, DateTimeMeasurementUnit dateTimeGridAlignment, string formatString)

        {

            XYDiagram _diagram = (XYDiagram)chart.Diagram;

            if (_diagram != null)

            {

                _diagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Month;//X軸刻度單位

                _diagram.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Month;//X軸刻度間距

                _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom;

                _diagram.AxisX.DateTimeOptions.FormatString = formatString;

            }

        }

    }

} 

 運行效果如下圖所示:

 

DevExpress ChartControl加載大數據量數據時的性能優化方法有哪些?

關於圖表優化,可從以下幾個方面解決:

1.關閉不需要的可視化的元素(如LineMarkers, Labels等): Series.View.LineMarkerOptions.Visible =false.

2. 關閉圖表的滾動與縮放功能,手動調整范圍,這樣將大大減少所需計算的個數。

3. 將 ChartControl.RefreshDataOnRepaint屬性設為false

4. 將 ChartControl.CacheToMemory屬性設為true,這樣將通過緩存提供圖表性能及內存消耗。

5. 將ChartControl.RuntimeHitTesting屬性設為false。這樣將禁用聚焦檢查及測試,提供圖表重繪速度.

____

http://www.devexpresscn.com/DevExpress-Resources/Documentation-17.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM