源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#中dotnetcharting的用法实例详解

  • 时间:2020-03-09 00:54 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#中dotnetcharting的用法实例详解
本文以实例形式详细讲述了dotnetcharting控件的用法。分享给大家供大家参考。具体用法分析如下: dotnetcharting 是一个很好用的图表控件,能画出很漂亮的报表,一般常用到的主要有柱状图、饼图、折线图三种。 dotnetcharting 有web版、winform版多个版本可供使用,官方网址:http://www.dotnetcharting.com/ ,官网有很多示例(http://www.dotnetcharting.com/gallery/),而且有winform安装版示例和代码,如下图。 dotnetcharting 有网上破解版的,去百度或谷歌一搜一堆。 说下个人感受,该控件是国外开发的,虽然说这个控件挺好用的,但是感觉这个控件应该在有xp系统的时候就应该有了吧?是国外剩下的技术,咱们一直在用别人不用的技术,捧为珍宝。 有些技术有些人,有些本事就开始自大起来,小有成就的那点技术还藏着掖着。 呵呵。。。 [img]http://files.jb51.net/file_images/article/201410/2014102991720368.png?20149299193[/img]   接下来上干货,前两天刚使用dotnetcharting 做了个统计报表,代码如下:  
[u]复制代码[/u] 代码如下:
using System; using System.Collections.Generic; using System.Data; using System.Drawing; using dotnetCHARTING.WinForms; using StationChart.Model; using StationChart.Utility; using Chart = dotnetCHARTING.WinForms.Chart; using Series = dotnetCHARTING.WinForms.Series; using SeriesCollection = dotnetCHARTING.WinForms.SeriesCollection;   namespace ManageSystem {     // <summary>     // 作者:薛江涛     // 版本:V1.0.0     // 时间:2014/10/9 11:49:48     // </summary>     public class ShowData     {         #region 属性         private string _phaysicalimagepath;//图片存放路径         private string _xtitle;//图片x座标名称         private string _ytitle;//图片y座标名称         private string _seriesname;//图例名称         private int _picwidth;//图片宽度         private int _pichight;//图片高度         private DataTable _dt;//图片数据源         private DataSet _ds;//图片数据源           private Color _titleBoxColor;//图片标题背景色         private Font _titleBoxFont;//图片标题字体         private Color _chartAreaBackgroundColor;//图片背景颜色         private Font _xAxisLabelFont;//X轴柱状图值字体         private Font _yAxisLabelFont;//Y轴柱状图值字体         private Font _xAxisDefaultTickLabelFont;//X轴刻度字体         private Font _yAxisDefaultTickLabelFont;//Y轴刻度字体         private SeriesType _chartDefaultSeriesType;//图片类型         private ChartType _chartType;//图片类型         //private bool _isMonth; //是否是月显示         private int _staticColumnWidth;//设置柱状图每个单元格的宽度         private int _numberPercision;//设置数值小数点           /// <summary>         /// 图片存放路径         /// </summary>         public string PhaysicalImagePath         {             set { _phaysicalimagepath = value; }             get { return _phaysicalimagepath; }         }           /// <summary>         /// 图片标题         /// </summary>         public string Title { get; set; }           /// <summary>         /// 图片标题         /// </summary>         public string XTitle         {             set { _xtitle = value; }             get { return _xtitle; }         }         /// <summary>         /// 图片标题         /// </summary>         public string YTitle         {             set { _ytitle = value; }             get { return _ytitle; }         }           /// <summary>         /// 图例名称         /// </summary>         public string SeriesName         {             set { _seriesname = value; }             get { return _seriesname; }         }         /// <summary>         /// 图片宽度         /// </summary>         public int PicWidth         {             set { _picwidth = value; }             get { return _picwidth; }         }         /// <summary>         /// 图片高度         /// </summary>         public int PicHight         {             set { _pichight = value; }             get { return _pichight; }         }         /// <summary>         /// 图片数据源         /// </summary>         public DataTable DataSource         {             set { _dt = value; }             get { return _dt; }         }         /// <summary>         /// 图片数据源         /// </summary>         public DataSet DataSetSource         {             set { _ds = value; }             get { return _ds; }         }           public int NumberPercision         {             set { _numberPercision = value; }             get { return _numberPercision; }         }           public Color TitleBoxColor         {             get { return _titleBoxColor; }             set { _titleBoxColor = value; }         }           public Font TitleBoxFont         {             get { return _titleBoxFont; }             set { _titleBoxFont = value; }         }           public Color ChartAreaBackgroundColor         {             get { return _chartAreaBackgroundColor; }             set { _chartAreaBackgroundColor = value; }         }           public Font XAxisLabelFont         {             get { return _xAxisLabelFont; }             set { _xAxisLabelFont = value; }         }           public Font YAxisLabelFont         {             get { return _yAxisLabelFont; }             set { _yAxisLabelFont = value; }         }           public Font XAxisDefaultTickLabelFont         {             get { return _xAxisDefaultTickLabelFont; }             set { _xAxisDefaultTickLabelFont = value; }         }           public Font YAxisDefaultTickLabelFont         {             get { return _yAxisDefaultTickLabelFont; }             set { _yAxisDefaultTickLabelFont = value; }         }           public SeriesType ChartDefaultSeriesType         {             get { return _chartDefaultSeriesType; }             set { _chartDefaultSeriesType = value; }         }           public ChartType ChartType         {             get { return _chartType; }             set { _chartType = value; }         }           //public bool IsMonth         //{         // get { return _isMonth; }         // set { _isMonth = value; }         //}             public ModelConseme.DateChartEnum SeriesTypeE { get; set; }           public int StaticColumnWidth         {             get { return _staticColumnWidth; }             set { _staticColumnWidth = value; }         }           #endregion           #region 构造函数         public ShowData()         {             //             // TODO: 在此处添加构造函数逻辑             //             NumberPercision = 2;         }           public ShowData(string phaysicalImagePath, string title, string xTitle, string yTitle, string seriesName)         {             _phaysicalimagepath = phaysicalImagePath;             Title = title;             _xtitle = xTitle;             _ytitle = yTitle;             _seriesname = seriesName;         }         #endregion           private static readonly object ThisLock = new object();           #region 输出柱形图         /// <summary>         /// 柱形图         /// </summary>         /// <returns></returns>         public void CreateColumn(Chart chart)         {             try             {                 //清空图片                 chart.SeriesCollection.Clear();                 //标题框设置                 //标题的颜色                 chart.TitleBox.Label.Color = _titleBoxColor;                 //标题字体设置                 chart.TitleBox.Label.Font = _titleBoxFont;                   //控制柱状图颜色                 chart.ShadingEffectMode = ShadingEffectMode.One;                   chart.TitleBox.Position = TitleBoxPosition.None;                   //图表背景颜色                 chart.ChartArea.Background.Color = ChartAreaBackgroundColor;                 //1.图表类型                 chart.DefaultSeries.Type = _chartDefaultSeriesType;// SeriesType.Column;                 //chart.DefaultSeries.Type = SeriesType.Cylinder;                 //2.图表类型                 //柱状图                 //chart.Type = ChartType.TreeMap;                 ////横向柱状图                 chart.Type = _chartType;// ChartType.ComboHorizontal                 ////横向柱状图                 //chart.Type =_chartType;// ChartType.Gantt;                 ////饼状图                 //chart.Type = ChartType.Pies;                   //y轴图表阴影颜色                 //chart.YAxis.AlternateGridBackground.Color = Color.FromArgb(255, 250, 250, 250);                 chart.LegendBox.HeaderLabel = new Label("图表说明", new Font("Microsoft Sans Serif", 10F, FontStyle.Bold, GraphicsUnit.Point, 134));                 //chart.LegendBox.HeaderLabel.Font = new Font("Microsoft Sans Serif", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 134);                 chart.LegendBox.Label.Font = new Font("Microsoft Sans Serif", 9F, FontStyle.Bold, GraphicsUnit.Point, 134);                 chart.Palette = new Color[] { Color.FromArgb(0, 156, 255), Color.FromArgb(255, 99, 49), Color.FromArgb(49, 255, 49), Color.FromArgb(255, 255, 0), };                   chart.Title = Title;                 //X轴柱状图值字体                 chart.XAxis.Label.Text = _xtitle;                 chart.XAxis.Label.Font = _xAxisLabelFont;                 //设置X轴刻度值说明字体                 chart.XAxis.DefaultTick.Label.Font = _xAxisDefaultTickLabelFont;                   chart.XAxis.StaticColumnWidth = _staticColumnWidth; //每个单元格的宽度                     //Y轴柱状图值字体                 chart.YAxis.Label.Text = _ytitle;                 chart.YAxis.Label.Font = _yAxisLabelFont;                 //设置Y轴刻度值说明字体                 chart.YAxis.DefaultTick.Label.Font = _yAxisDefaultTickLabelFont;                   //Y轴箭头标示                 chart.XAxis.Name = XTitle;                 if (_chartType == ChartType.ComboHorizontal)                 {                     chart.XAxis.TickLabelPadding = 10;                     chart.XAxis.Line.StartCap = System.Drawing.Drawing2D.LineCap.Square;                     chart.XAxis.Line.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;                     chart.XAxis.Line.Width = 5;//箭头宽度                     chart.XAxis.Line.Color = Color.Gray;                 }                 else                 {                     chart.YAxis.TickLabelPadding = 10;                     chart.YAxis.Line.StartCap = System.Drawing.Drawing2D.LineCap.Square;                     chart.YAxis.Line.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;                     chart.YAxis.Line.Width = 5;//箭头宽度                     chart.YAxis.Line.Color = Color.Gray;                     //显示值格式化(小数点显示几位)                     chart.YAxis.NumberPercision = _numberPercision;                 }                   //图片存放路径                 chart.TempDirectory = System.Environment.CurrentDirectory + "\\" + _phaysicalimagepath;                 //图表宽度                 chart.Width = _picwidth;                 //图表高度                 chart.Height = _pichight;                 chart.Series.Name = _seriesname;                 //单一图形                 //chart.Series.Data = _dt;                 //chart.SeriesCollection.Add();                   //图例在标题行显示,但是没有合计信息                 //chart.TitleBox.Position = TitleBoxPosition.FullWithLegend;                 //chart.TitleBox.Label.Alignment = StringAlignment.Center;                 //chart.LegendBox.Position = LegendBoxPosition.None; //不显示图例,指不在右侧显示,对上面一行的属性设置并没有影响                   chart.DefaultSeries.DefaultElement.ShowValue = true;                 chart.ShadingEffect = true;                 chart.Use3D = false;                 chart.Series.DefaultElement.ShowValue = true;                 chart.SeriesCollection.Add(GetArrayData());               }             catch (Exception ex)             {                 LogHelper.WriteErrorLog(ex.ToString(), ex);             }         }           /// <summary>         /// 柱形图         /// </summary>         /// <returns></returns>         public void CreateColumn(Chart chart, List<int> list)         {             try             {                 chart.SeriesCollection.Clear();                 //标题框设置                 //标题的颜色                 chart.TitleBox.Label.Color = _titleBoxColor;                 //标题字体设置                 chart.TitleBox.Label.Font = _titleBoxFont;                   //控制柱状图颜色                 chart.ShadingEffectMode = ShadingEffectMode.Five;                 //图表背景颜色                 chart.ChartArea.Background.Color = ChartAreaBackgroundColor;                     //1.图表类型                 chart.DefaultSeries.Type = _chartDefaultSeriesType;// SeriesType.Column;                 //chart.DefaultSeries.Type = SeriesType.Cylinder;                 //2.图表类型                 //柱状图                 //chart.Type = ChartType.TreeMap;                 ////横向柱状图                 chart.Type = _chartType;// ChartType.ComboHorizontal                 ////横向柱状图                 //chart.Type =_chartType;// ChartType.Gantt;                 ////饼状图                 //chart.Type = ChartType.Pies;                   //y轴图表阴影颜色                 //chart.YAxis.AlternateGridBackground.Color = Color.FromArgb(255, 250, 250, 250);                 chart.LegendBox.HeaderLabel = new Label("图表说明", new Font("Microsoft Sans Serif", 10F, FontStyle.Bold, GraphicsUnit.Point, 134));                 //chart.LegendBox.HeaderLabel.Font = new Font("Microsoft Sans Serif", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 134);                 chart.LegendBox.Label.Font = new Font("Microsoft Sans Serif", 9F, FontStyle.Bold, GraphicsUnit.Point, 134);                 chart.Palette = new Color[] { Color.FromArgb(0, 156, 255), Color.FromArgb(255, 99, 49), Color.FromArgb(49, 255, 49), Color.FromArgb(255, 255, 0), };                   chart.Title = Title;                 //X轴柱状图值字体                 chart.XAxis.Label.Text = _xtitle;                 chart.XAxis.Label.Font = _xAxisLabelFont;                 //设置X轴刻度值说明字体                 chart.XAxis.DefaultTick.Label.Font = _xAxisDefaultTickLabelFont;                   chart.XAxis.StaticColumnWidth = _staticColumnWidth; //每个单元格的宽度                     //Y轴柱状图值字体                 chart.YAxis.Label.Text = _ytitle;                 chart.YAxis.Label.Font = _yAxisLabelFont;                 //设置Y轴刻度值说明字体                 chart.YAxis.DefaultTick.Label.Font = _yAxisDefaultTickLabelFont;                   //Y轴箭头标示                 chart.XAxis.Name = XTitle;                 if (_chartType == dotnetCHARTING.WinForms.ChartType.ComboHorizontal)                 {                     chart.XAxis.TickLabelPadding = 10;                     chart.XAxis.Line.StartCap = System.Drawing.Drawing2D.LineCap.Square;                     chart.XAxis.Line.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;                     chart.XAxis.Line.Width = 5;//箭头宽度                     chart.XAxis.Line.Color = Color.Gray;                 }                 else                 {                     chart.YAxis.TickLabelPadding = 10;                     chart.YAxis.Line.StartCap = System.Drawing.Drawing2D.LineCap.Square;                     chart.YAxis.Line.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;                     chart.YAxis.Line.Width = 5;//箭头宽度                     chart.YAxis.Line.Color = Color.Gray;                     //显示值格式化(小数点显示几位)                     chart.YAxis.NumberPercision = _numberPercision;                 }                   //图片存放路径                 chart.TempDirectory = System.Environment.CurrentDirectory + "\\" + _phaysicalimagepath;                 //图表宽度                 chart.Width = _picwidth;                 //图表高度                 chart.Height = _pichight;                 chart.Series.Name = _seriesname;                 //单一图形                 //chart.Series.Data = _dt;                 //chart.SeriesCollection.Add();                   //图例在标题行显示,但是没有合计信息                 //chart.TitleBox.Position = TitleBoxPosition.FullWithLegend;                 //chart.TitleBox.Label.Alignment = StringAlignment.Center;                 //chart.LegendBox.Position = LegendBoxPosition.None; //不显示图例,指不在右侧显示,对上面一行的属性设置并没有影响                   chart.DefaultSeries.DefaultElement.ShowValue = true;                 chart.ShadingEffect = true;                 chart.Use3D = false;                 chart.Series.DefaultElement.ShowValue = true;                     chart.SeriesCollection.Add(GetArrayData(list));               }             catch (Exception ex)             {                   LogHelper.WriteErrorLog(ex.ToString(), ex);             }         }             ///// <summary>         ///// 柱形图,单一图片         ///// </summary>         ///// <returns></returns>         //public void CreateColumn(Chart chart1)         //{         // Chart1.Title = _title;         // Chart1.XAxis.Label.Text = _xtitle;         // Chart1.YAxis.Label.Text = _ytitle;         // Chart1.TempDirectory = PhaysicalImagePath;         // Chart1.Width = _picwidth;         // Chart1.Height = _pichight;         // Chart1.Type = ChartType.Combo;           // Chart1.Series.Type = SeriesType.Cylinder;         // Chart1.Series.Name = _seriesname;         // Chart1.Series.Data = _dt;         // Chart1.SeriesCollection.Add();         // Chart1.DefaultSeries.DefaultElement.ShowValue = true;         // Chart1.ShadingEffect = true;         // Chart1.Use3D = false;         // Chart1.Series.DefaultElement.ShowValue = true;         //}           #endregion           #region 输出饼图         /// <summary>         /// 饼图         /// </summary>         /// <returns></returns>         public void CreatePie(Chart chart)         {             try             {                   chart.SeriesCollection.Clear();                 //控制饼图颜色                 chart.ShadingEffectMode = ShadingEffectMode.Two;                   chart.TitleBox.Position = TitleBoxPosition.None;                 chart.Title = Title;                 //标题的颜色                 chart.TitleBox.Label.Color = _titleBoxColor;                 //标题字体设置                 chart.TitleBox.Label.Font = _titleBoxFont;                   //图表说明                 chart.LegendBox.HeaderLabel = new dotnetCHARTING.WinForms.Label("图表说明", new Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 134));                 //chart.LegendBox.HeaderLabel.Font = new Font("Microsoft Sans Serif", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 134);                 chart.LegendBox.Label.Font = new Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 134);                 chart.Palette = new Color[] { Color.FromArgb(0, 156, 255), Color.FromArgb(255, 99, 49), Color.FromArgb(49, 255, 49), Color.FromArgb(255, 255, 0), };                     chart.Title = Title;                 //X轴柱状图值字体                 chart.XAxis.Label.Text = _xtitle;                 chart.XAxis.Label.Font = _xAxisLabelFont;                 //设置X轴刻度值说明字体                 chart.XAxis.DefaultTick.Label.Font = _xAxisDefaultTickLabelFont;                 chart.XAxis.Label.Text = _xtitle;                 chart.YAxis.Label.Text = _ytitle;                 chart.TempDirectory = _phaysicalimagepath;                 chart.Width = _picwidth;                 chart.Height = _pichight;                 chart.Type = ChartType.Pie;                 chart.Series.Type = SeriesType.Cylinder;                 chart.Series.Name = _seriesname;                 chart.YAxis.NumberPercision = _numberPercision;                   chart.ShadingEffect = true;                 chart.Use3D = false;                 chart.DefaultSeries.DefaultElement.Transparency = 20;//线条透明度                 chart.DefaultSeries.DefaultElement.ShowValue = true;                 chart.PieLabelMode = dotnetCHARTING.WinForms.PieLabelMode.Outside;                 chart.SeriesCollection.Add(GetPieArrayData());                 chart.Series.DefaultElement.ShowValue = true;               }             catch (Exception ex)             {                 LogHelper.WriteErrorLog(ex.ToString(), ex);             }         }           #region 输出曲线图         /// <summary>         /// 曲线图,昨日今日对比         /// </summary>         /// <returns></returns>         public void CreateLine(Chart chart)         {             try             {                 chart.SeriesCollection.Clear();                   chart.TitleBox.Position = TitleBoxPosition.None;                 //标题的颜色                 chart.TitleBox.Label.Color = _titleBoxColor;                 //标题字体设置                 chart.TitleBox.Label.Font = _titleBoxFont;                 //图表背景颜色                 chart.ChartArea.Background.Color = ChartAreaBackgroundColor;                   //X轴柱状图值字体                 chart.XAxis.Label.Font = _xAxisLabelFont;                 //设置X轴刻度值说明字体                 chart.XAxis.DefaultTick.Label.Font = _xAxisDefaultTickLabelFont;                   //Y轴柱状图值字体                 chart.YAxis.Label.Font = _yAxisLabelFont;                 //设置Y轴刻度值说明字体                 chart.YAxis.DefaultTick.Label.Font = _yAxisDefaultTickLabelFont;                   //Y轴箭头标示                 chart.YAxis.TickLabelPadding = 0;                 chart.YAxis.Line.StartCap = System.Drawing.Drawing2D.LineCap.Square;                 chart.YAxis.Line.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;                 chart.YAxis.Line.Width = 5;//箭头宽度                 chart.YAxis.Line.Color = Color.Gray;                   chart.Title = Title;                 chart.XAxis.Label.Text = _xtitle;                 chart.YAxis.Label.Text = _ytitle;                 chart.TempDirectory = _phaysicalimagepath;                 // Set the size                 chart.Width = _picwidth;                 chart.Height = _pichight;                 // Set the temp directory                 chart.TempDirectory = "temp";                 // Debug mode. ( Will show generated errors if any )                 chart.Debug = true;                 chart.Type = ChartType.Combo;                 chart.DefaultSeries.Type = SeriesType.Line;                 //chart.Series.Type = SeriesType.Line;                 chart.Series.Name = _seriesname;                 chart.DefaultSeries.DefaultElement.ShowValue = false;                 chart.ShadingEffect = true;                 chart.Use3D = false;                 chart.Series.DefaultElement.ShowValue = true;                 chart.DefaultSeries.DefaultElement.Transparency = 20;//线条透明度                 chart.DateGrouping = TimeInterval.Day;                 ////显示值格式化(小数点显示几位)                 chart.YAxis.NumberPercision = _numberPercision;                   chart.OverlapFooter = false;                   SeriesCollection mySC = GetRandomData();                 mySC[0].DefaultElement.Color = Color.FromArgb(255, 99, 49);                 mySC[1].DefaultElement.Color = Color.FromArgb(0, 156, 255);                   // Add the random data.                 chart.SeriesCollection.Add(mySC);             }             catch (Exception ex)             {                 LogHelper.WriteErrorLog(ex.ToString(), ex);             }         }         #endregion           /// <summary>         /// 曲线图         /// </summary>         /// <returns></returns>         SeriesCollection GetRandomData()         {             SeriesCollection sc = new SeriesCollection();             try             {                 DataTable dt = _dt;                   var s = new Series();                 var s2 = new Series();                   switch (SeriesTypeE)                 {                     case ModelConseme.DateChartEnum.DayChart:                         for (int i = 0; i < 24; i++)                         {                             s.Name = "今天";                             s2.Name = "昨天";                             Element e = new Element();                             // 每元素的名称                             e.Name = (i).ToString();                             // 每元素的大小数值                             e.YValue = 0;                               Element e2 = new Element();                             // 每元素的名称                             e2.Name = (i).ToString();                             // 每元素的大小数值                             e2.YValue = 0;                               s.Elements.Add(e);                             s2.Elements.Add(e2);                             sc.Add(s);                             sc.Add(s2);                         }                           for (int i = 0; i < dt.Rows.Count; i++)                         {                             string sodayHH = dt.Rows[i][1].ToString();                             string today = dt.Rows[i][1].ToString().Substring(0, 10);                             int HH = Convert.ToInt32(sodayHH.Substring(11));                             if (DateTime.Now.ToString("yyyy-MM-dd").Equals(today))                             {                                 sc[0].Elements[HH].YValue = Convert.ToDouble(dt.Rows[i][2].ToString());                             }                             else                             {                                 sc[1].Elements[HH].YValue = Convert.ToDouble(dt.Rows[i][2].ToString());                             }                         }                         break;                     case ModelConseme.DateChartEnum.MonthChart:                         for (int i = 1; i < 32; i++)                         {                             s.Name = "本月";                             s2.Name = "上月";                             var e = new Element();                             // 每元素的名称                             e.Name = (i).ToString();                             // 每元素的大小数值                             e.YValue = 0;                               var e2 = new Element();         &nbs
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部