C#下MSchart的应用总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#下MSchart的应用总结相关的知识,希望对你有一定的参考价值。

【WinForm】MSChart主要属性

一、绘图区域ChartAreas

在一个Chart控件中可增加多个绘图区域,每个绘图区域包含独立的图表组、数据源,可用于多个图表类型。

1.AlignmentOrientation:图表区对齐方向,定义两个绘图区域间的对齐方式,默认为Vertical。

2.AlignmentStyle:图表区对齐类型,定义图表间用以对其的元素。

3.AlignWithChartArea:参照对齐的绘图区名称。

4.InnerPlotPosition:图表在绘图区内的位置属性。

  a.Auto:是否自动对齐。

  b.Height:图表在绘图区内的高度(百分比,取值在0-100)

  c.Width:图表在绘图区内的宽度(百分比,取值在0-100)

  d.X,Y:图表在绘图区内左上角坐标

5.Position:绘图区位置属性,选项如同InnerPlotPosition。

6.Name:绘图区名称。

7.Axes:坐标轴集合-非常重要的部分,可分别设置X轴(X axis),Y轴(Y axis),第二X轴(SecnondaryX axis)和第二Y轴(Secnondary Y axis),常用的属性包括:

 a.ArrowStyle设置坐标轴是否有箭头

  b.Interval:轴刻度间隔大小

 c.IntervalOffset:轴刻度偏移量大小

 d.LableStyle 设置坐标轴的文字大小等

  e.MajorGrid:主要辅助线

 f.MajorTickMark:主要刻度线

 g.MinorTickMark:次要刻度线

 h.MinorGrid:次要辅助线

  i.Title:坐标轴标题

  j.TitleAlignment:坐标轴标题对齐方式

二、数据系列Series

Series:最重要的属性,图表集合,就是最终看到的饼图、柱状图、线图、点图等构成的合;可以将多种相互兼容的类型放在一个绘图区域内,形成复合图。

1.ChartArea:图表所属的绘图区域名称

2.ChartType:图表类型(柱形、饼形、线形、点形等)

3.IsValueShownAsLabel:是否显示数据点标签,如果为true,在图表中显示每一个数据值

4.Label:数据点标签文本

5.LabelFormat:数据点标签文本格式

6.LabelAngle:标签字体角度

7.Legend:当前数据系列(图表)使用的图例名称

8.Name:数据系列的名称

9.Palette:数据系列(图表)外观定义

10.Points:数据点集合,构成数据系列的点

11.XValueMember:横坐标绑定的数据源

12.XValueType:横坐标轴类型

13.YValueMembers:纵坐标绑定的数据源

14.YValueType:纵坐标轴类型

、图例Legends

MSChart的图例默认不显示,但可进行如下设置:

1.Alignment:对齐方式

2.AutoFitMinFontSize:当IsTextAutoFit为true时,显示的最小字体

3.BackColor:背景颜色,当本身的绘图区域有背景时,将其设置为transparent效果更佳。

4.enabled:是否显示图例

5.IsTextAutoFit:文字大小根据图例区域的大小自动调整

6.Position:图例出现的位置

 

 

 

技术分享

从图中可以看到一个chart可以绘制多个ChartArea,每个ChartArea都可以绘制多条Series。ChartArea就是就是绘图区域,可以有多个ChartArea叠加在一起,series是画在ChartAarea上的,Series英文意思是“序列、连续”,其实就是数据线,它可以是曲线、点、柱形、条形、饼图...可以注意该chart当数据非常多的时候可以通过鼠标选择查看区域,进一步拖拽横纵向滚动条来缩小曲线图查看。

 

一、数据源:

    数据返回方式是DataSet.Tables[0],即DataTable,也是最基本的数据源方式。这里只介绍DataTable绑定数据源,很简单:

                chartData.DataSource = dt;

                chartData.DataBind();

二、Series:

   Series是画在ChartArea上的线、点、柱形、条形、饼图,简单点儿说就是画在上面的数据,直接说属性,

 1. “标记”:就是数据点,某个数据值的点。如下图所示:

技术分享

技术分享

 

3. “Font”:数据标签上的字体和样式

Font                      标签字体设置

     Font.Unit                 个人设置此值为Document,自己体会

     LabelAngle                标签角度,斜多少度,建议就正着

     LabelBackColor            标签背景颜色

     LabelBorderColor          标签边框颜色

      LabelBorderDahStyle       标签边框样式

     LabelBorderWidth          标签边框宽度

     LabelForeColor            标签字体颜色

     其他属性自己试

4、空白点(EmptyPointStyle):就是连续的数据,譬如X轴对应Y轴没数据,或Y轴对应X轴没数据,这样的数据点可以对其设置相应的属性;

 

5、数据源:注意这里是Series的数据源(XValueMember、YValueMembers)

注意:
    第一,这两个属性对应的是DataTable的两个列,也就是一般的X轴对应时间,Y轴对应数据值,但是也要注意对DataTable的每个数据单元的值做判断,尤其是DBNull或空。我这里的数据库的NewDateTime列数据类型是DateTime类型,NewFyj是Double类型。

    第二,Series的数据源和Chart控件的数据源有区别,只有DataTable先绑定了Chart,Series才对应到列,否则无法对应。

6. 图表(ChartArea):也就是Serie画在哪个ChartArea上,ChartType是Serie的图表类型,也就是画何种图,曲线图、直线图、点、柱状图、饼图等...

7. 图例(Legend):也就是每个Serie的名字和样式,只要创建Serie就会自动产生加载在Legend里,里面的属性可以试一下,如果想调整Legend的位置,可以去Legend集合里设置,比较简单,这里不多说

8. 映射区(TooTip):鼠标放在数据点上出现的小提示,建议用代码控制;

9. 杂项:  EmptyPointValue:空数据点的值做平均还是做零处理

         LabelStyle: 对标签硬性的规定显示在数据点旁的哪个位置

10. 轴:也就是X轴和Y轴,X轴有主轴和副轴,Y轴也有主轴和副轴,主轴为Primary,副轴为Secondary。X主轴在下方,Y主轴在右方,X副轴在上方,Y副轴在右方。

 

三、ChartAreas:

Chart控件里最重要的,每个Serie都画在ChartArea上,Chart控件可以有多个ChartArea叠加在一起显示。比如第一个ChartArea绘制的是曲线,第二个画的柱状图或者是别的,这也是上面说过的Serie的ChartType,我们也可以把多个Serie画在一个ChartArea上,但是如果有一个列数据单位范围在500~10000之间的数据浮动最大,有一列数据单位范围在0.1~2.0之间,有一列数据单位范围在50~100之间,那画在同一个ChartArea上显示的话,0.1到2.0的数据会变成一条直线。当只有1、2条这样的数据时,可以在Serie中设置主轴和副轴,但当出现多条数据,多种类型的显示,就需要多个ChartArea来解决了。

 

1.      对齐:ChartArea对齐方式;

AlignmentOrientation水平对齐、垂直对齐、全部对齐

AlignmentStyle  根据哪种方式对齐   AlignmentWithChartArea和哪个对齐

2.      三维(Area3DStyle):自己试试,效果很沉重,不是很好;

3.      外观:可以对ChartArea颜色、边框、位置的设置;

注意:

  第一,InnerPlotPosition和Position一个是大的,一个是内部绘制的,试一下就明白了,这里最重要的是多个ChartArea重叠在一起的时候,两个Position一定要设置相同,否则就重叠不上了。

 第二,多个ChartArea重叠在一起的时候,颜色或图片只能在叠在最底下的ChartArea来设置,上面的ChartArea都设置为透明即可,最底下的ChartArea是ChartAreas[0],所以不要设置错。

4.      游标:CursorX和CursorY,就是横向和纵向滚动条, 首先强调一下,只要想选择区域细看曲线图,就一定要启用游标,游标的设置只能在叠加在最上面的ChartArea进行设置,也就是ChartArea[ChartArea.Count-1],X轴和Y轴上都可以有游标,可以拖动,可以注意看有个按钮上面有个圆圈,就是向后退,滑动用户选择的区域,松开鼠标就会变成该区域的图形;

5.      轴Axes!!:非常重要,一个ChartArea有4个轴:主轴X axis、主轴Y(Value)axis、副轴X axis、副轴Y(Value)axis,每个轴属性均相同;属性:标签、间隔(Interval)、标题、数据视图(ScaleView)、滑动条(ScrollBar),外观、网络刻度线等;

注意:  ScaleView是数据视图,也就是当前绘制出图表的一个区域,如果用鼠标选择某个区域展开显示,新展开的就又是一个ScaleView,只把它想成当前显示的视图就好理解了。ScrollBar就是游标,之前我们说的ChartArea.CursorX或Y是也是游标,这里的ScrollBar是滚动条,仔细看两者的属性不难发现,一个是选择区域,一个是拖拽滚动条查看所有数据。

以上是关于C#下MSchart的应用总结的主要内容,如果未能解决你的问题,请参考以下文章

C#反射之基础应用实例总结

关于C#委托应用与总结

C#字符串的截取函数用法总结

转:C# 中 MSCHART 饼状图显示百分比

C#开发微信门户及应用(44)--微信H5页面开发的经验总结

C# WinForm应用程序降低系统内存占用方法总结