[WinForm]DevExpress之ChartControl使用小计

ChartControl顾名思义就是数据基于图表展示,关键在于Series上的处理。

关键代码:

using System;

using System.Drawing;

using DevExpress.XtraCharts;



namespace DevExpressUtilHelpV3

{

    public static class ChartToolV3

    {

        /// <summary>

        /// 创建Series

        /// </summary>

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

        /// <param name="seriesName">Series名字『诸如:理论电量』</param>

        /// <param name="seriesType">seriesType『枚举』</param>

        /// <param name="dataSource">数据源</param>

        /// <param name="xBindName">ChartControl的X轴绑定</param>

        /// <param name="yBindName">ChartControl的Y轴绑定</param>

        public static void CreateSeries(this ChartControl chat, string seriesName, ViewType seriesType, object dataSource, string xBindName, string yBindName)

        {

            CreateSeries(chat, seriesName, seriesType, dataSource, xBindName, yBindName, null);

        }

        /// <summary>

        /// 创建Series

        /// </summary>

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

        /// <param name="seriesName">Series名字『诸如:理论电量』</param>

        /// <param name="seriesType">seriesType『枚举』</param>

        /// <param name="dataSource">数据源</param>

        /// <param name="xBindName">ChartControl的X轴绑定</param>

        /// <param name="yBindName">ChartControl的Y轴绑定</param>

        /// <param name="createSeriesRule">Series自定义『委托』</param>

        public static void CreateSeries(this ChartControl chat, string seriesName, ViewType seriesType, object dataSource, string xBindName, string yBindName, Action<Series> createSeriesRule)

        {

            if (chat == null)

                throw new ArgumentNullException("chat");

            if (string.IsNullOrEmpty(seriesName))

                throw new ArgumentNullException("seriesType");

            if (string.IsNullOrEmpty(xBindName))

                throw new ArgumentNullException("xBindName");

            if (string.IsNullOrEmpty(yBindName))

                throw new ArgumentNullException("yBindName");



            Series _series = new Series(seriesName, seriesType);

            _series.ArgumentScaleType = ScaleType.Qualitative;

            _series.ArgumentDataMember = xBindName;

            _series.ValueDataMembers[0] = yBindName;



            _series.DataSource = dataSource;

            if (createSeriesRule != null)

                createSeriesRule(_series);

            chat.Series.Add(_series);

        }



    }

}

代码示例:

        public Form1()

        {

            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)

        {

            DataTable _dt = CreateTestDB();

            chartControl1.CreateSeries("理论功率", ViewType.Spline, _dt, "time", "Power");

            chartControl1.CreateSeries("实际功率", ViewType.Spline, _dt, "time", "ActulPower");

        }

        /// <summary>

        /// 准备数据源

        /// </summary>

        /// <returns>DataTable</returns>

        private DataTable CreateTestDB()

        {

            DataTable _testData = new DataTable();

            _testData.Columns.Add(new DataColumn("time", typeof(string)));

            _testData.Columns.Add(new DataColumn("Power", typeof(decimal)));

            _testData.Columns.Add(new DataColumn("ActulPower", typeof(decimal)));

            Random _rm = new Random();

            for (int i = 0; i < 24; i++)

            {

                DataRow _drNew = _testData.NewRow();

                _drNew["time"] = string.Format("{0}点", i);

                _drNew["Power"] = 250;

                _drNew["ActulPower"] = _rm.Next(220, 245);

                _testData.Rows.Add(_drNew);

            }

            return _testData;

        }

上述代码效果

image

例子链接:https://www.dropbox.com/s/7rlyvwwftxdxqqt/Devexpress_chartControl_20140313_Demo.zip

你可能感兴趣的:(DevExpress)