DevExpress之ChartControl实现柱状图演示实例

作者:shichen2014 时间:2023-05-27 08:45:15 

本文实例讲述了DevExpress中ChartControl实现柱状图演示的方法。分享给大家供大家参考。具体实现方法如下:

关键代码如下:

using System;
using System.Data;
using System.Windows.Forms;
using CSharpUtilHelpV2;
using DevExpress.XtraCharts;

namespace DevExpressChart
{
    public partial class winProduct : Form
    {
        public winProduct()
        {
            InitializeComponent();
        }
        static readonly string AccessFullPath = string.Format(@"{0}\Northwind.MDB", AppDomain.CurrentDomain.BaseDirectory);
        static DataTable ProductList = null;
        AccessUtilsV2 AccessHelper = null;
        private void winChat_Load(object sender, EventArgs e)
        {
            AccessHelper = new AccessUtilsV2(AccessFullPath);
            ProductList = AccessHelper.ExecuteDataTable("select * from Products", null);
            BuilderDevChart();
        }
        private void BuilderDevChart()
        {
            if (ProductList != null)
            {
                Series _barSeries = new Series("测试", ViewType.Bar);
                _barSeries.ArgumentDataMember = "ProductName";//x轴
                _barSeries.ValueDataMembers[0] = "UnitPrice";//Y轴
                _barSeries.DataSource = ProductList;
                _barSeries.AddDataFilter("CategoryID", 4, DataFilterCondition.Equal);
                _barSeries.SetColorEach(true);
                chartControl1.Series.Add(_barSeries);
                _barSeries.LegendPointOptions.PointView = PointView.ArgumentAndValues;

                //chartControl1.SeriesDataMember = "UnitPrice";
                //chartControl1.SeriesTemplate.ValueDataMembers[0] = "UnitPrice";
                //chartControl1.SeriesTemplate.ArgumentDataMember = "ProductName";
                //chartControl1.SeriesTemplate.ArgumentScaleType = ScaleType.Qualitative;
                //chartControl1.SeriesTemplate.AddDataFilter("CategoryID", 4, DataFilterCondition.Equal);
                //chartControl1.SeriesTemplate.LegendPointOptions.PointView = PointView.ArgumentAndValues;
                chartControl1.SetXLableAngle(-35);
                chartControl1.SetCrosshair(true);

                chartControl1.Legend.Direction = LegendDirection.LeftToRight;
                chartControl1.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Center;
                chartControl1.Legend.AlignmentVertical = LegendAlignmentVertical.BottomOutside;
                chartControl1.DataSource = ProductList;

                chartControl1.AddTitle("Product List");
                //--------------------------
            }
        }
    }
}

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;
            }
        }
    }
}
运行效果如下图所示:

DevExpress之ChartControl实现柱状图演示实例

希望本文所述对大家的C#程序设计有所帮助。

标签:DevExpress,ChartControl
0
投稿

猜你喜欢

  • C#中Request.Cookies 和 Response.Cookies 的区别分析

    2023-07-10 07:24:59
  • Android用户输入自动提示控件AutoCompleteTextView使用方法

    2022-02-25 14:59:50
  • android简单自定义View实现五子棋

    2023-06-01 19:30:38
  • Maven项目修改JDK版本全过程

    2021-07-19 12:13:29
  • Apache commons fileupload文件上传实例讲解

    2021-09-09 17:19:29
  • Android 利用ViewPager+GridView实现首页导航栏布局分页效果

    2021-08-05 09:39:07
  • Java Web项目中解决中文乱码方法总结(三种最新方法)

    2023-07-18 18:13:22
  • C#封装的常用文件操作类实例

    2021-08-14 10:08:03
  • Android实现遮罩层(蒙板)效果

    2023-04-26 18:43:03
  • 浅谈Java中几种常见的比较器的实现方法

    2022-04-08 19:04:36
  • Android Retrofit实现多图片/文件、图文上传功能

    2021-11-01 00:23:47
  • java 中HttpClient传输xml字符串实例详解

    2023-11-24 13:40:54
  • Android仿支付宝中余额宝的数字动画效果

    2021-10-17 08:32:54
  • 详解Java图形化编程中的鼠标事件设计

    2022-07-11 08:11:31
  • C#难点逐个击破(3):params数组参数

    2022-01-17 14:40:22
  • Android 使用Vibrator服务实现点击按钮带有震动效果

    2023-06-15 01:57:16
  • springboot+spring data jpa实现新增及批量新增方式

    2023-01-27 03:45:53
  • C#编程调用Cards.dll实现图形化发牌功能示例

    2022-10-24 12:02:54
  • struts2实现多文件上传

    2023-11-23 02:27:53
  • SWT(JFace) Menu、Bar...体验代码

    2022-01-29 08:34:46
  • asp之家 软件编程 m.aspxhome.com