Chart控件,chart、Series、ChartArea曲线图绘制的重要属性介绍(Windows窗体)

参考博文1:参考博文2:chart绑定mysql数据源_MSChart常用属性和数据源的绑定_卖旺sellerwant的博客-CSDN博客

一个chart可以绘制多个ChartArea,每个ChartArea都可以绘制多条Series

ChartArea就是就是绘图区域,可以有多个ChartArea叠加在一起

series是画在ChartAarea上的,Series英文意思是“序列、连续”,其实就是数据线,它可以是曲线、点、柱形、条形、饼图...

可以注意该chart当数据非常多的时候可以通过鼠标选择查看区域,进一步拖拽横纵向滚动条来缩小曲线图查看。

Chart控件的命名是chart1,数据源是dt,由于chart属性太多,不好一 一解释,所以请仔细看截图,尤其重视本例用到的属性

一、数据源难者不会,数据不显示啊啊啊啊啊

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

                chartData.DataSource = dt;
                chartData.DataBind();

三、ChartAreas:
    每个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          和哪个对齐

     老实说,没啥用,可以设置Position,一会儿在外观里会说到

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

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

                        BackColor                       ChartArea的背景颜色

                        BackGradientStyle               背景颜色的渐变方式

                        BackHatchStyle                  背景阴影

                        BackImage                       背景图片

                        BackImageAlignment              图片显示位置

                        BackImageTransparentColor       绘制图像时显示的颜色

                        BackImageWrapMode               包装模式  
                        BackSecondaryColor              ChartArea的第二背景颜色,搭配渐变用的

                        BorderColor                     边框颜色

                        BorderDashStyle                 边框线的样式

                        BorderWidth                     边框宽度

以上在控件属性里都有,可根据需要调节。

                        ShadowColor                     整个图标的背影颜色(red)

                        ShadowOffset                    背影偏移量(10)

注意:

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

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

4. 游标:CursorX和CursorY,就是横向和纵向滚动条

找不到,反正暂时用也不到

                       CursorX.AutoScroll                  滚动条自动滚动

                       CursorX.AxisType                    游标作用在主轴还是副轴

                       CursorX.Interval                    游标偏移的间隔

                       CursorX.IntervalOffset              游标间隔偏移量

                       CursorX.IntervalOffsetType          游标间隔的单位,建议Auto
                       CursorX.Type                        游标间隔偏移量的单位,建议Auto

                       CursorX.IsUserEnabled               启用游标

                       CursorX.IsUserSelectedEnabled       启用游标选择区域

                       CursorX.LineColor                   游标线颜色

                       CursorX.LineDashStyle               游标线样式

                       CursorX.LineWidth                   游标线的宽度

                       CursorX.SelectionColor              游标选择区域的颜色

                       CursorY相同,其他属性自己试

 首先强调一下,只要想选择区域细看曲线图,就一定要启用游标,游标的设置只能在叠加在最上面的ChartArea进行设置,也就是ChartArea[ChartArea.Count-1]。

X轴和Y轴上有游标,可以拖动,可以注意看有个按钮上面有个圆圈,就是向后退,图中的蓝色矩形方块就是用户选择的区域,松开鼠标就会变成该区域的图形。

5. 杂项:Name,没啥好说的

6. 轴Axes!!:非常重要,一个ChartArea有4个轴:主轴X axis、主轴Y(Value)axis、副轴X axis、副轴Y(Value)axis,每个轴属性均相同,只说一个一个轴

                        IsLabelAutoFit                  轴上的标签自动调整

                        LabelAutoFitMaxFontSize         轴上标签自适应字体大号
                        LabelAutoFitMaxFontSize         轴上标签自适应字体小号

                        LabelStyle.Angle                标签显示角度

                        LabelStyle.IsEndLabelVisible    最后一个标签是否显示     

                        其他属性自己试

    我的Interval这里设置都是NotSet,没有设置Auto,为什么???。

                        TextOrientation             轴的标题方向

                        Title                       轴的名字,X轴是时间轴,Title就是时间

                        其他属性自己试,简单

                        IntervalAutoMode             间隔是固定值还是随着轴变化

                      ScaleView                      数据视图,就是当前绘制展开的图!重要!
                      MinSizeType                    游标滚动类型

                      ScrollBar                      滚动条

    ScaleView是数据视图,也就是当前绘制出图表的一个区域,如果用鼠标选择某个区域展开显示,新展开的就又是一个ScaleView,只把它想成当前显示的视图就好理解了。

    ScrollBar就是游标,之前我们说的ChartArea.CursorX或Y是也是游标,这里的ScrollBar是滚动条,仔细看两者的属性不难发现,一个是选择区域,一个是拖拽滚动条查看所有数据。

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

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

               MarkerBorderColor    数据点边框的颜色

               MarkerBorderWidth    数据点边框的宽度

               MarkColor            数据点的颜色
               MakerSize            数据点的大小,默认值为0数据点不存在,建议代码控制

               MarkerStep           数据点显示的频率

               MarkerStyle          数据点的样式,可以是方块、圆圈、三角、叉子....

 2. “标签”:就是现在是在数据点旁边数据值    

            IsValueShownAsLabel                    数据值是否显示,建议代码控制

            SmartLabelStyle                        数据值样式

            SmartLabelStyle.Enabled                直接控制可用不可用,建议不可用

            SmartLabelStyle.AllowOutsidePloArea    数据值显示是否允许在外面

注意:如果要使用SmartLabelStyle的话,所有的数据点的值都会自动找位置显示出来,如果某一个区域数据点较多,就会直线指示;如果不用的话,数据点的值会在数据点旁边显示,不会有直线。如下图所示也可以看到AllowOutsidePlotArea的区别。(????)

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

                     Font                      标签字体设置

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

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

                     LabelBackColor            标签背景颜色

                     LabelBorderColor          标签边框颜色

                     LabelBorderDahStyle       标签边框样式

                     LabelBorderWidth          标签边框宽度

                     LabelForeColor            标签字体颜色

4. 空白点:就是连续的数据,譬如X轴对应Y轴没数据,或Y轴对应X轴没数据,这样的数据点可以对其设置相应的属性,属性大多都是上面说过的,自己试一下即

5. 数据:其实就是就是serie的名字和值类型

                           Name                  就是唯一的名字

                           XvalueType            X轴值类型

                           YValuesPerPoint       数据点的Y值数目

                           YValueType            Y轴值类型

默认不用设置就好,主要是X轴和Y轴值类型设置的是Auto,也就是根据X轴上的值和Y轴上的值的类型自动匹配,当然手动设置的话不设错就行了。

6. 数据源:注意这里是Series的数据源

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

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

    第三,假如用户需要先查看所有数据,然后取消某几条进行数据对比,但是不需要重新查询数据,推荐赋值string.Empty实现,如下图:

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

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

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

                       EmptyPointValue          空数据点的值做平均还是做零处理

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

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

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在VB.NET中使用Chart控件制作实时曲线,可以按照以下步骤进行: 1. 添加Chart控件窗体:将Chart控件从工具箱中拖拽到窗体上。 2. 设置Chart控件属性:可以设置ChartAreaSeries和Legend等属性,以适应你需要展示的实时曲线的样式。可以通过代码或者属性窗口进行设置。 3. 添加曲线数据点:在代码中,使用Chart控件Series属性,添加数据点到曲线中。可以使用AddXY方法添加x和y坐标的数据点。例如,可以使用一个循环来实时添加数据点到曲线中。 4. 实时更新曲线:为了实现实时更新曲线效果,可以将添加数据点的代码放在一个定时器控件的事件中,通过设置合适的时间间隔来周期性地更新曲线。在定时器事件中,每次添加一个新的数据点并刷新Chart控件。 以下是一个简单的示例代码,展示如何在VB.NET中使用Chart控件制作实时曲线: ``` Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Chart1.Series.Clear() Dim series As New Series("实时曲线") series.ChartType = SeriesChartType.Line Chart1.Series.Add(series) Timer1.Interval = 1000 '设置刷新频率为每秒一次 Timer1.Start() End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick Dim x As Double = DateTime.Now.ToOADate() Dim y As Double = Math.Sin(x) '这里使用sin函数模拟实时数据 Chart1.Series(0).Points.AddXY(x, y) Chart1.ChartAreas(0).AxisX.Minimum = x - 10 '根据需要设置X轴的显示范围 Chart1.ChartAreas(0).AxisX.Maximum = x End Sub End Class ``` 这样,运行程序后,Chart控件将显示一个实时更新的曲线,每秒钟添加一个新的数据点。通过修改Timer1.Interval的值,可以调整刷新频率。此示例使用正弦函数来模拟实时数据,你可以根据自己的需求修改添加数据点的代码来实时显示不同的数据曲线。 ### 回答2: 在VB.NET中,可以使用Chart控件实现实时曲线的绘制。以下是一个示例的步骤: 1. 首先,在Windows Form应用程序中添加Chart控件,并设置其属性(例如标题、轴标签等)。 2. 在代码中,需要使用Timer控件来触发定时更新曲线的事件。创建一个Timer控件,并设置其Interval属性为适当的时间间隔,然后在Timer的Tick事件中编写更新曲线的代码。 3. 在Form的Load事件中,初始化曲线的数据和设置初始参数,例如设置曲线的X和Y轴范围、曲线的样式等。 4. 在Timer的Tick事件中,编写更新曲线的代码。首先,获取最新的数据点(可以使用传感器、模拟数据等方式获取),然后将数据添加到Chart控件Series中。例如,可以使用Series的Points.AddXY方法来添加数据点。 5. 最后,设置曲线的缩放和滚动功能,以便显示最新的数据点。可以使用Chart控件的AxisX和AxisY对象的滚动条和缩放功能来实现。例如,可以使用AxisX的ScaleView.Zoom方法和AxisX的ScaleView.Scroll方法来缩放和滚动X轴。 需要注意的是,在更新曲线的过程中,要确保在UI线程上执行更新操作,以避免界面卡顿或崩溃的问题。可以使用Control的Invoke方法将更新代码放在UI线程上执行。 综上所述,通过以上步骤,可以在VB.NET中使用Chart控件实现实时曲线的绘制。 ### 回答3: 在使用VB.NET编程语言中,我们可以使用Chart控件来实现实时曲线的绘制。下面是一个简单的实时曲线绘制的示例: 首先,在窗体上添加一个Chart控件(例如Chart1)。然后,可以在窗体的Load事件中初始化一些图表属性,以便绘制实时曲线。 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' 设置图表的一些属性 Chart1.ChartAreas.Add("ChartArea1") ' 添加图表区域 Chart1.Series.Add("Series1") ' 添加曲线 ' 设置图表区域的轴的最小值和最大值 Chart1.ChartAreas("ChartArea1").AxisX.Minimum = 0 ' X轴最小值 Chart1.ChartAreas("ChartArea1").AxisX.Maximum = 10 ' X轴最大值 Chart1.ChartAreas("ChartArea1").AxisY.Minimum = 0 ' Y轴最小值 Chart1.ChartAreas("ChartArea1").AxisY.Maximum = 100 ' Y轴最大值 End Sub 然后,我们可以使用一个Timer控件来定期更新曲线的数据。在Timer的Tick事件中,我们可以生成一些随机数,并将其添加到Series1中,更新曲线的展示。 Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick Dim random As New Random() Dim data As Integer = random.Next(0, 101) ' 生成0到100之间的随机数 ' 添加数据点到Series1中 Chart1.Series("Series1").Points.AddY(data) ' 如果数据点个数超过10个,移除最早的数据点 If Chart1.Series("Series1").Points.Count > 10 Then Chart1.Series("Series1").Points.RemoveAt(0) End If ' 刷新图表 Chart1.Refresh() End Sub 最后,在窗体的FormClosing事件中,记得停止Timer控件的运行,以便正确释放资源。 Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing Timer1.Stop() ' 停止Timer的运行 End Sub 通过以上代码,我们可以在Chart控件上实时绘制曲线,随着时间的推移,曲线会不断更新。这是一个简单的实时曲线绘制的示例,你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值