VB环境下MSChart控件的应用与研究
vb的chart用法

vb的chart用法一、概述VB是一种常用的编程语言,其内置了图表控件,可以方便地创建各种图表。
Chart控件可用于数据可视化,展示数据之间的关系和趋势。
本篇文档将介绍VB中Chart控件的用法。
二、Chart控件的属性1. Chart对象:Chart控件的根对象,代表整个图表。
2. ChartType:设置图表类型,如柱形图、折线图、饼图等。
3. ChartTitle:设置图表标题。
4. Series1~SeriesN:设置系列数据,用于绘制图表。
5. XAxisTitle、YAxisTitle:设置X轴和Y轴的标题。
6. Legend:设置图例的位置和显示方式。
7. PlotValues:绘制数据点或趋势线。
三、Chart控件的方法1. AddSeries方法:添加系列数据。
2. Series.DataLabels.Show方法:显示数据标签。
3. Series.MarkerStyle属性:设置标记样式。
4. Chart.Export方法:导出图表为图片或PDF文件。
5. Chart.Refresh方法:刷新图表数据。
四、使用Chart控件的步骤1. 添加Chart控件到窗体中。
2. 设置Chart对象的属性,如ChartType、XAxisTitle、YAxisTitle等。
3. 添加系列数据,可以使用DataGridView或数据库等数据源获取数据。
4. 调用AddSeries方法添加系列数据,并设置系列名称和颜色等属性。
5. 绘制数据点或趋势线,可以使用PlotValues属性。
6. 保存或导出图表,可以使用Chart对象的Export方法。
五、示例代码以下是一个简单的VB代码示例,展示如何使用Chart控件绘制柱形图:```vbPrivate Sub Form_Load()' 创建Chart对象Dim chart As New Chart' 设置Chart对象的属性chart.ChartType = xlBarClustered ' 设置图表类型为柱形图chart.Title.Text = "柱形图示例" ' 设置标题' 添加系列数据Dim series As New Series = "销售业绩" ' 设置系列名称series.DataSource = DataGridView1 ' 使用DataGridView 获取数据源chart.SeriesCollection.Add(series) ' 添加系列数据到Chart对象中' 显示图表chart_Paint(chart) ' 在窗体上绘制图表End SubPrivate Sub chart_Paint(ByVal chart As Object)' 绘制图表数据chart.PlotValues = "X,Y" ' 绘制数据点,X为横坐标,Y 为纵坐标值End Sub```以上代码示例展示了如何使用Chart控件创建一个简单的柱形图,并使用DataGridView作为数据源。
mschart控件使用详解

一.数据源说到绘制图表,可能很多人的第一反应除了是图表呈现的方式外,更关心的便是数据如何添加,记得在很多年前,哪时要绘制一个数据曲线图,一直找不到好的呈现方式,后来使用了SVG的绘图模式,不过在添加数据的时候可谓吃尽了苦头,毕竟,SVG只是一种描述语言,要动态的实现一个图表的绘制,是非常困难的.对于微软的图表控件,数据添加是一件很简单的方式,它支持多种数据添加方式,如:·可以在图表的设计界面,在属性设置窗口中的Series属性下的Points中添加需要的数据.·可以在图表的设计界面中,在属性中绑定一个数据源.·可以在后台代码中,动态添加数据.·可以在后台代码中设置一个或多个数据源,直接绑定到图表中.在此处,我只着重讲解一下第3,4两点.对于第3点,相对来说比较简单,在后台代码中,找到要添加代码的Series,通过它下面Points的Add、AddXY、AddY等方法,即可以实现数据的添加.例如:1. double t;2. for(t = 0; t <= (2.5 * Math.PI); t += Math.PI/6)3. {4. double ch1 = Math.Sin(t);5. double ch2 = Math.Sin(t-Math.PI/2);6. Chart1.Series["Channel 1"].Points.AddXY(t, ch1);7. Chart1.Series["Channel 2"].Points.AddXY(t, ch2);8. }复制代码注:代码摘自微软的例子,上例中,Chart1为图表的名字,Channel 1、Channel 2分别表示两个Series数据序列)二.绑定数据先来看看图表控件都支持什么类型的数据绑定,根据官方文档的说法,只要是实现了IEnumerable接口的数据类型,都可以绑定到图表控件中,例如:DataView, DataReader, DataSet, DataRow, DataColumn, Array, List, SqlCommand, OleDbCommand, SqlDataAdapter, 及OleDbDataAdapter对象。
MSChart控件

MSChart控件在VB中,除了可以利用Line和Circle方法绘制几何图形外,还可以利用MSChart 控件绘制各种图表。
MSChart控件在绘制直方图(条形图)、折线图、饼图、标记图、填充区域图等各种常用的数据分析图形方面有很大的优势,我们只要将需按图形表示的数据装入数组中,然后将数组数据赋值给MSChart控件,再进行一些简单的图形标题、背景、图例、注脚方面的定义,就可以得到所期望的数据分析图形。
【教学目标】使学习者能够掌握MSChart控件的创建和使用方法。
【教学要求】掌握:定义统计图表数据源的方法。
理解:创建统计图表的过程及步骤。
掌握:MSChart控件的相关属性定义方法。
【本节重点】创建统计图表的过程及步骤。
一、MSChart控件MSChart控件的系统默认名是:MSChart1、MSChart2等。
由于MSChart控件不是VB内建的基本控件,因此在使用前必须用工程菜单中的“部件”,添加MSChart控件。
添加MSChart控件的选项是“Microsoft Chart Control 6.0(OLEDB)”。
当我们在VB的工具箱中添加了MSChart控件,并在窗体中“画”出MSChart控件后,可见到如下图形:图:7.3二、设置MSChart系列数据与图表类型1、MSChart的系列通过对图7.3的分析,我们可以看到MSChart图表中将数据分组显示。
如图中R1、R2、R3、R4、R5各代表一个组,一组相关的数据在绘图中称为一个“系列”,一张图表可由一个或多个系列构成。
若MSChart控件被赋值一个一维数组数据,则它所显示的数据图形只绘制出一个系列的图表。
若一维数组中的数据被绘制为直方图,则数组中的数据会被逐一绘制为直方图中的彩条。
若一维数组中的数据被绘制为圆饼图,则数组中的数据会被逐一绘制为饼图中的彩色扇形。
若MSChart控件被赋值一个二维数组数据,则它所显示的数据图形将绘制出多个系列的图表。
关于vb中MSCHART控件画二维线图

关于vb中MSCHART控件画二维线图问题如下:使用MSCHART控件做出类似下面这个图形的图来。
经过一些摸索给出如下答案:Private Sub Command1_Click()Dim MyData(0 To 4, 0 To 15) As StringDim iRow As Integer'损失时间H---第1行'次品数PCS---第2行'调机/转型号H---第3行' 报废KG---第4行MyData(1, 0) = "损失时间"MyData(2, 0) = "次品数"MyData(3, 0) = "调机/转型号"MyData(4, 0) = "报废"For i = 1 To 15MyData(0, i) = i & Space(1) '注意一定要后面的space(1),这样做的目的是为了自动显示成标签(字符串类型)Next' 第1行数据初始化(注意,为0的数据不要赋值)iRow = 1MyData(iRow, 1) = 189: MyData(iRow, 2) = 280: MyData(iRow, 3) = 233MyData(iRow, 6) = 338: MyData(iRow, 7) = 356'第2行数据初始化iRow = 2MyData(iRow, 1) = 227: MyData(iRow, 2) = 190: MyData(iRow, 3) = 172MyData(iRow, 6) = 189: MyData(iRow, 7) = 232'第3行数据初始化iRow = 3MyData(iRow, 1) = 72: MyData(iRow, 2) = 145: MyData(iRow, 3) = 120MyData(iRow, 6) = 140: MyData(iRow, 7) = 205'第4行数据初始化iRow = 4MyData(iRow, 1) = 36.01: MyData(iRow, 2) = 37.05: MyData(iRow, 3) = 39.31MyData(iRow, 6) = 32.99: MyData(iRow, 7) = 37.98With MSChart1'------------------图线标记外观设置开始----------------------------------------------------------------For iRow = 1 To 4 '本循环设置4条线标记的大小,线的粗细.Plot.SeriesCollection(iRow).SeriesMarker.Auto = FalseWith MSChart1.Plot.SeriesCollection(iRow).DataPoints.Item(-1).Marker.Visible = True: .Pen.Width = 10: .Size = 150End WithNext' 下面的语句单独设置每条线标记的图案类型'第一行标记iRow = 1.Plot.SeriesCollection(iRow).DataPoints.Item(-1).Marker.Style = VtMarkerStyleFilledCircle '圆形'第二行标记iRow = 2.Plot.SeriesCollection(iRow).DataPoints.Item(-1).Marker.Style = VtMarkerStyleFilledSquare '方形'第三行标记iRow = 3.Plot.SeriesCollection(iRow).DataPoints.Item(-1).Marker.Style = VtMarkerStyleFilledUpTriangle '三角形'第四行标记iRow = 4.Plot.SeriesCollection(iRow).DataPoints.Item(-1).Marker.Style = VtMarkerStyleStar '*形'------------------图线标记外观设置结束----------------------------------------------------------------'------------------ 图线外观设置开始----------------------------------------------------------------For iRow = 1 To 4 '本循环设置4条线的粗细及数据值的显示位置.Plot.SeriesCollection(iRow).Pen.Width = 10.Plot.SeriesCollection(iRow).DataPoints(-1).DataPointLabel.LocationType = VtChLabelLocationTypeRight.Plot.SeriesCollection(iRow).DataPoints(-1).DataPointLabel.VtFont.Size = 8'原图中不显示第一条数据线的数值If iRow = 1 Then .Plot.SeriesCollection(iRow).DataPoints(-1).DataPointLabel.LocationType = VtChLabelLocationTypeNoneNext'------------------图线外观设置结束----------------------------------------------------------------'------------------ 坐标轴外观设置开始----------------------------------------------------------------'设置X 轴外观.Plot.Axis(VtChAxisIdX).ValueScale.Auto = False.Plot.Axis(VtChAxisIdX).AxisGrid.MinorPen.Style = VtPenStyleNull.Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleNull'设置第一Y轴外观.Plot.Axis(VtChAxisIdY).ValueScale.Auto = False.Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 380.Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 19.Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 0.Plot.Axis(VtChAxisIdY).AxisGrid.MinorPen.Style = VtPenStyleNull.Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleNull'设置第二Y轴外观.Plot.Axis(VtChAxisIdY2).AxisScale.Hide = True.Plot.Axis(VtChAxisIdY2).ValueScale.Auto = False.Plot.Axis(VtChAxisIdY2).AxisGrid.MinorPen.Style = VtPenStyleNull.Plot.Axis(VtChAxisIdY2).AxisGrid.MajorPen.Style = VtPenStyleNull'------------------坐标轴外观设置结束----------------------------------------------------------------'------------------ 图例外观设置开始----------------------------------------------------------------.ShowLegend = True.Legend.Backdrop.Frame.Style = VtFrameStyleSingleLine.Legend.Backdrop.Frame.Width = 10.Legend.Location.LocationType = VtChLocationTypeTopRight'------------------ 图例外观设置结束----------------------------------------------------------------'------------------ 图形区设置开始----------------------------------------------------------------.Plot.AutoLayout = False.Plot.LocationRect.Min.Set 0, 0.Plot.LocationRect.Max.Set .Width, .Height - 850 '减去图例的高度'------------------图形区设置结束----------------------------------------------------------------.Plot.DataSeriesInRow = True '设置图形按行读取数据.chartType = VtChChartType2dLine '设置图表类型.ChartData = MyDataEnd WithEnd SubMSCHART的使用之vb中利用MSCHART控件画二维散点图2008年03月31日星期一 16:12近日在学习傅立叶分解时,写了个小程序来验证自己对傅立叶分解的一些理解,为了更生动直观就需要画一些图形,以前总是用picture控件来实现,后来在网上看到VB中有个MSCHART控件可以来画很多类型的图形,就学习了一下,由于是第一次搞,所以按习惯在网上搜索相关帖子,发现没有一个很完整的关于MSCHART中二维散点图的例子,很是郁闷,经过我自己几天的努力,终于解决了这个问题.现以一个具体的例子来说明,希望我的这个例子能对大家有所帮助.这个例子是一个论坛上一位网友提出来的,但是这个问题一直到现在还没有人回答,我权当在这里回答一下吧.问题如下:根据此我写了下面的代码Private Sub Form_Load()'对于二维散点图来说,第一列代表了X轴坐标,第二列代表了Y轴坐标'因此在定义二维数据时,第二维定义为0到1,第一维代表了第几点数据,可根据数据点数变化'下面以数据点数有21点为列子Dim MyData(20, 1) As Double'-----x轴坐标值-----Y轴坐标值----------MyData(0, 0) = 0: MyData(0, 1) = 180 '本句代表了:第一点数据的X轴坐标为0,Y轴坐标为180MyData(1, 0) = 6: MyData(1, 1) = 60MyData(2, 0) = 8: MyData(2, 1) = 60MyData(3, 0) = 11: MyData(3, 1) = 0MyData(4, 0) = 16: MyData(4, 1) = 0MyData(5, 0) = 19: MyData(5, 1) = 60MyData(6, 0) = 25.8: MyData(6, 1) = 60MyData(7, 0) = 28.8: MyData(7, 1) = 0MyData(8, 0) = 31.8: MyData(8, 1) = 60MyData(9, 0) = 40.3: MyData(9, 1) = 60MyData(10, 0) = 43.3: MyData(10, 1) = 0MyData(11, 0) = 93.3: MyData(11, 1) = 0MyData(12, 0) = 96.3: MyData(12, 1) = 60MyData(13, 0) = 99.3: MyData(13, 1) = 0MyData(14, 0) = 105.3: MyData(14, 1) = 0MyData(15, 0) = 135.3: MyData(15, 1) = 0MyData(16, 0) = 144.3: MyData(16, 1) = 180MyData(17, 0) = 148.8: MyData(17, 1) = 270MyData(18, 0) = 405.03: MyData(18, 1) = 270MyData(19, 0) = 409.53: MyData(19, 1) = 180MyData(20, 0) = 564.17: MyData(20, 1) = 180'波形图外观设置With MSChart1.TitleText = "速度 m/min"' '设置图线的外观.Plot.SeriesCollection(1).Pen.Width = 30.Plot.SeriesCollection(1).Pen.Style = VtPenStyleSolid' '设置XY轴.Plot.Axis(VtChAxisIdX).ValueScale.Auto = False.Plot.Axis(VtChAxisIdY).ValueScale.Auto = False'// 设置最大值.Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 600.Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 300'// 设置最小值.Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0.Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0'//.Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 6 'X轴主要网格数量 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 'Y轴主要网格数量 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 0 'X轴次要网格数量 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 0 'Y轴次要网格数量 .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted.Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleDotted MSChart1.Plot.AutoLayout = FalseMSChart1.Plot.UniformAxis = FalseMSChart1.chartType = VtChChartType2dXY '设置图形为二维散点图MSChart1.ChartData = MyData '数据End WithEnd Sub运行后的效果图如下MSCHART的二维散点图对于实际工作是有很大用途的,例如数据采集中,实现时间变量的曲线等等.希望这个例子对大家有帮助。
VB.NET使用CHART控件做实时曲线

使⽤CHART控件做实时曲线使⽤CHART 控件做实时曲线编程,因⼀⼯程需要将现场数据采集过来,并以实时曲线的⽅式,显⽰出来,顾写了个例⼦程序,供⼤家参考,不对的地⽅请⼤家指正,谢谢!废话不多说,下⾯是整个代码,希望能够帮到⼤家。
Imports System.Windows.Forms.DataVisualization.ChartingPublic Class Form1'//定义曲线1X轴变量为时间Private X1(19) As String'//定义曲线1Y轴变量为瞬时流量Private Y1(19) As Double'//定义曲线2X轴变量为时间Private X2(19) As String'//定义曲线2Y轴变量为瞬时流量Private Y2(19) As Double'//定义画图区域变量Private fluxArea As ChartArea'//定义Serial对象Private fluxLine1 As SeriesPrivate fluxLine2 As Series'//定义Legends对象Private fluxLegend As LegendPrivate Sub InitChartSet()'//初始化Chart对象设置'//设置控件背景⾊Chart1.BackColor = Color.Black'//定义标题对象变量Dim ChartTitle As New Title'//设置Title信息With ChartTitle.Text = "⽪带秤流量实时曲线".Text = "⽪带秤流量实时曲线".ForeColor = Color.Yellow.Font = New System.Drawing.Font("微软雅⿊", 16.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))End With'//清除所有标题对象Chart1.Titles.Clear()Chart1.Titles.Add(ChartTitle)'//清空画图区域Chart1.ChartAreas.Clear()'//创建chartarea对象实例fluxArea = New ChartArea("fluxArea")'//将定义的画图区域添加到chartChart1.ChartAreas.Add(fluxArea)'//设置显⽰区域With fluxArea'//设置背景颜⾊为⿊⾊.BackColor = Color.Black'//设置X轴最⼩值.AxisX.Minimum = 1'//设置X轴最⼤值.AxisX.Maximum = 20'//设置X轴.AxisX.Interval = 1'//设置X轴标题.AxisX.Title = "时间"'//设置X轴标题字体.AxisX.TitleFont = New System.Drawing.Font("微软雅⿊", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byt e))'//设置X轴线宽.AxisX.LineWidth = 3'//设置X轴颜⾊.AxisX.LineColor = Color.Green'//设置X轴线型.AxisX.LineDashStyle = ChartDashStyle.Solid'//设置X轴标题对齐.AxisX.TitleAlignment = StringAlignment.Center'//设置X轴标题颜⾊.AxisX.TitleForeColor = Color.Yellow'//设置X轴⽹格刻度线.AxisX.MajorGrid.LineColor = Color.Green'//设置X轴⽹格刻度线宽度.AxisX.MajorGrid.LineWidth = 1'//设置X轴⽹格刻度线样式.AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dash'//设置X轴刻度线颜⾊.AxisX.MajorTickMark.LineColor = Color.Green'//设置X轴刻度线长度.AxisX.MajorTickMark.Size = 2'//设置X轴刻度线宽度.AxisX.MajorTickMark.LineWidth = 2'//设置X轴刻度线样式.AxisX.MajorTickMark.LineDashStyle = ChartDashStyle.Solid'//设置X轴刻度线位置.AxisX.MajorTickMark.TickMarkStyle = TickMarkStyle.OutsideArea'//设置X轴标签颜⾊belStyle.ForeColor = wnGreen'//设置Y轴最⼩值.AxisY.Minimum = 0D'//设置Y轴最⼤值.AxisY.Maximum = 150D.AxisY.Maximum = 150D'//设置Y轴标题.AxisY.Title = "⽪带秤瞬时流量"'//设置Y轴标题字体.AxisY.TitleFont = New System.Drawing.Font("微软雅⿊", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byt e))'//设置X轴线宽.AxisY.LineWidth = 3'//设置X轴颜⾊.AxisY.LineColor = Color.Green'//设置X轴线型.AxisY.LineDashStyle = ChartDashStyle.Solid'//设置Y轴标题对齐.AxisY.TitleAlignment = StringAlignment.Center'//设置Y轴标题颜⾊.AxisY.TitleForeColor = Color.Yellow'//设置Y轴⽹格刻度线.AxisY.MajorGrid.LineColor = Color.Green'//设置Y轴⽹格刻度线宽度.AxisY.MajorGrid.LineWidth = 1'//设置Y轴⽹格刻度线样式.AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash'//设置X轴刻度线颜⾊.AxisY.MajorTickMark.LineColor = Color.Green'//设置X轴刻度线长度.AxisY.MajorTickMark.Size = 2'//设置X轴刻度线宽度.AxisY.MajorTickMark.LineWidth = 2'//设置X轴刻度线样式.AxisY.MajorTickMark.LineDashStyle = ChartDashStyle.Solid'//设置X轴刻度线位置.AxisY.MajorTickMark.TickMarkStyle = TickMarkStyle.OutsideArea'//设置Y轴标签颜⾊belStyle.ForeColor = wnGreenEnd With'//创建Legends对象实例fluxLegend = New Legend("fluxLegend")'//设置Legends对象With fluxLegend'//设置图例停靠位置为⾃动.Position.Auto = True'//设置图例对齐⽅式为居中.Alignment = StringAlignment.Center'//设置图例停靠位置为底部.Docking = Docking.Bottom'//设置图例的背景⾊为透明.BackColor = Color.Transparent'//设置图例的字体颜⾊为⽩⾊.ForeColor = Color.White'//设置图例字体.Font = New System.Drawing.Font("微软雅⿊", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))End With'//清除默认LegendsChart1.Legends.Clear()Chart1.Legends.Add(fluxLegend)'//创建series对象实例fluxLine1 = New Series("fluxLine1")fluxLine2 = New Series("fluxLine2")'//设置Serial对象1With fluxLine1With fluxLine1'//设置线型.ChartType = SeriesChartType.Spline'//设置画线区域.ChartArea = "fluxArea"'//设置画线的宽度.BorderWidth = 3'//设置画线颜⾊.Color = wnGreen'//设置画线阴影.ShadowOffset = 1'//设置图⽰⽂字.LegendText = "4A路⽪带秤"'//设置图例属性.Legend = "fluxLegend"End With'//设置Serial对象2With fluxLine2'//设置线型.ChartType = SeriesChartType.Spline'//设置画线区域.ChartArea = "fluxArea"'//设置画线的宽度.BorderWidth = 3'//设置画线颜⾊.Color = Color.Red'//设置画线阴影.ShadowOffset = 1'//设置图⽰⽂字.LegendText = "4B路⽪带秤"'//设置图例属性.Legend = "fluxLegend"End With'//清除默认seriesChart1.Series.Clear()'//将定义好的曲线对象添加到chartChart1.Series.Add(fluxLine1)Chart1.Series.Add(fluxLine2)End SubPrivate Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load'//InitChartSet()End SubPrivate Sub InitChartData()'// 设置初始数据Dim i As Integer = 0For i = 0 To 19X1(i) = Format(Now(), "HH:mm:ss")X2(i) = Format(Now(), "HH:mm:ss")Y1(i) = 0Y2(i) = 0Next'//显⽰数据Chart1.Series("fluxLine1").Points.DataBindXY(X1, Y1)Chart1.Series("fluxLine2").Points.DataBindXY(X2, Y2)End SubPrivate Sub RefreshChartData()'// 更新曲线数据Dim i As IntegerFor i = 0 To 18X1(i) = X1(i + 1)X2(i) = X2(i + 1)Y1(i) = Y1(i + 1)Y2(i) = Y2(i + 1)NextY1(19) = Math.Round(100 * Rnd(100) * 1.0264, 2)X1(19) = Format(Now(), "HH:mm:ss")Y2(19) = Math.Round(100 * Rnd(100) * 1.0264, 2)X2(19) = Format(Now(), "HH:mm:ss")Chart1.Series("fluxLine1").Points.DataBindXY(X1, Y1)Chart1.Series("fluxLine2").Points.DataBindXY(X2, Y2)End SubPrivate Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click InitChartData()Timer1.Enabled = TrueEnd SubPrivate Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick RefreshChartData()End SubEnd Class。
vb.netMschart控件简单实例

Mschart控件简单实例这几天公司制造部门所使用的程序中需要添加曲线图显示功能,因为以前没有做过这方面的开发,所以一直在网上找实例以便快速掌握技巧,将曲线图功能尽快做出来,通过google的搜寻,很失望,绝大部分MsChart控件方面的实例都是基于C++的,后来经过自己的慢慢摸索及参考C++实例方面的语法,然后通过自己的实践,掌握了部份功能,故将以下实例贴出给初次接触此控件的朋友参考.原图见下链接/photo/P-LYisX4mF8jqQDUD68EmA==/1694197884822258957.jpg 所需环境:Visual Studio 2008.net平台升级至3.5 sp1Mschart 控件、MSChart_VisualStudioAddOn、MSChartLP_chs实例首先在 2008中新建一个项目,然后新增一个名为form1的表单,将工具栏上的chart控件拖动到form1上,调整好具体位置。
再将工具栏上的timer控件拖动到form1上,并设置间隔时间为1分钟或其它你觉得比较合适的时间,此时表单上的控件都已经完成,然后添加如下代码:Imports System.Windows.Forms.DataVisualization.ChartingPublic Class Form1Dim random As New Random()Dim pointIndex As IntegerPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadChart1.ChartAreas.Clear()’清除所有绘图区Dim newChartAreas1 As New ChartArea("Default")‘新增绘图区Chart1.ChartAreas.Add(newChartAreas1)Chart1.ChartAreas("Default").BackColor = Color.FromName("GradientInactiveCaption")’设置绘图区颜色Chart1.ChartAreas("Default").BackGradientStyle = GradientStyle.HorizontalCenter‘设置绘图区颜色渐变方式Chart1.ChartAreas("Default").AxisX.IsMarginVisible = True'Chart1.ChartAreas("Default").Area3DStyle.Enable3D = True‘启用3D显示Chart1.ChartAreas("Default").AxisX.Title = "时间"'X轴名称Chart1.ChartAreas("Default").AxisY.Title = "数量"'Y轴名称Chart1.Titles.Clear()Dim newTitles1 As New Title("产品生产管制图") '建立标题newTitles1.Text = "产品生产管制图"Chart1.Titles.Add(newTitles1)Chart1.Series.Clear()’清除所有数据集Dim newSeries1 As New Series("标准值")'新增数据集newSeries1.ChartType = SeriesChar tType.Line’直线newSeries1.BorderWidth = 2newSeries1.Color = Color.BluenewSeries1.XValueType = ChartValueType.TimenewSeries1.IsValueShownAsLabel = FalseChart1.Series.Add(newSeries1)Dim newSeries2 As New Series("生产量")newSeries2.ChartType = SeriesChartType.LinenewSeries2.BorderWidth = 2newSeries2.Color = Color.GreennewSeries2.XValueType = ChartValueType.TimenewSeries2.IsValueShownAsLabel = TruenewSeries2.MarkerStyle = MarkerStyle.SquareChart1.Series.Add(newSeries2)Dim newSeries3 As New Series("下限值")newSeries3.ChartType = SeriesChartType.LinenewSeries3.BorderWidth = 2newSeries3.Color = Color.OrangeRednewSeries3.XValueType = ChartValueType.TimenewSeries3.IsValueShownAsLabel = FalseChart1.Series.Add(newSeries3)End SubPrivate Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.TickDim current_time As DateTimecurrent_time = DateTime.NowChart1.Series("标准值").Points.AddXY(current_time, 90)Chart1.Series("生产量").Points.AddXY(current_time, random.Next(20, 75))Chart1.Series("下限值").Points.AddXY(current_time, 15)End SubEnd Class。
vb 图表控件mschart 的用法小结
VtChChartType3dCombination 8 3维联合图
VtChChartType2dCombination 9 2维联合图
VtChChartType2dPie 14 2维饼形图
VtChChartType2dXY 16 2维坐标图
4 图表控件的数据
只有图表控件取得数据才有可能显示数据。图表控件的数据是存放在内置的数据网格内。图表控件数据网格取得数据的方法有:
1.使用Data属性
图表数据可以保存在图表控件的Data属性中。Data属性只能存储数字型的数据,而不能保存文本。在对Data属性赋值前,必须先设置RowCount属性和ColumnCount属性来提供数据的行数和列数,系统根据行数和列数安排Data的大小。
1 图表控件的加载
图表控件不属于标准控件,使用时需要加到工具箱。加入图表控件的方法是:在集成开发环境中,单击“工程”的“部件”,选择列表中的Microsoft Chart Control 6.0(OLEDB)即可。
加入到工具箱之后,加载图表控件到窗体就和加载标准控件的方法一样。
2 图表控件的属性
vntX(2,4) = 300 3级品数量
vntX(3,1) = “2000年” 行标放在第1列
vntX(3,2) = 300 1级品数量
vntX(3,3) = 200 2级品数量
vntX(3,4) = 100
11.ShowLagend属性
设置为True时可以显示图例。
3 图表控件的类型
图表控件可以绘制12种统计图形,设定图表控件的ChartType属性可以决定图表类型。见表4-1。
vb画图控件
一.安装控件的安装相对比较简单,下载完后,先执行“MSChart.exe”程序,它会自动检测你的环境,安装到系统目录中去,如果要在VS 2008环境中直接使用,那么需要安装For Vs2008的插件,MSChart_VisualStudioAddOn.exe,还有一个中文语言包MSChartLP_chs.exe。
安装完后,打开Vs2008,在建立项目的时候,你就能在工具栏中看到有一个Chart的控件了,如下图:二。
使用安装好后,建立一个.NET3.5的Web项目,像使用普通控件一样拖放到要使用的Web界面即可。
初步研究了一下,整个图形控件主要由以下几个部份组成:1.Annotations --图形注解集合2.ChartAreas --图表区域集合3.Legends --图例集合4.Series--图表序列集合(即图表数据对象集合)5.Titles--图标的标题集合Annotations注解集合Annotations是一个对图形的一些注解对象的集合,所谓注解对象,类似于对某个点的详细或者批注的说明,比如,在图片上实现各个节点的关键信息,如下图方框和黄色的小方框:一个图形上可以拥有多个注解对象,可以添加十多种图形样式的注解对象,包括常见的箭头、云朵、矩行、图片等等注解符号,通过各个注解对象的属性,可以方便的设置注解对象的放置位置、呈现的颜色、大小、文字内容样式等常见的属性。
ChartAreas图表区域集合ChartAreas可以理解为是一个图表的绘图区,例如,你想在一幅图上呈现两个不同属性的内容,一个是用户流量,另一个则是系统资源占用情况,那么你要在一个图形上绘制这两种情况,明显是不合理的,对于这种情况,可以建立两个ChartArea,一个用于呈现用户流量,另一个则用于呈现系统资源的占用情况。
当然了,图表控件并不限制你添加多少个绘图区域,你可以根据你的需要进行添加。
对于每一个绘图区域,你可以设置各自的属性,如:X,Y轴属性、背景等。
MSCHART的使用之vb中利用MSCHART控件画二维散点图
MSCHART的使用之vb中利用MSCHART控件画二维散点图2008年03月31日星期一 16:12近日在学习傅立叶分解时,写了个小程序来验证自己对傅立叶分解的一些理解,为了更生动直观就需要画一些图形,以前总是用picture控件来实现,后来在网上看到VB中有个MSCHART控件可以来画很多类型的图形,就学习了一下,由于是第一次搞,所以按习惯在网上搜索相关帖子,发现没有一个很完整的关于MSCHART中二维散点图的例子,很是郁闷,经过我自己几天的努力,终于解决了这个问题.现以一个具体的例子来说明,希望我的这个例子能对大家有所帮助.这个例子是一个论坛上一位网友提出来的,但是这个问题一直到现在还没有人回答,我权当在这里回答一下吧.问题如下:如何用VB画出我附件中的图,请各位知道的高手指点下,小弟感激不尽!最好能根据我给的数据写出具体的源代码,或者类似的也可以。
再次感谢!上面是这个帖子的原始图形根据此我写了下面的代码Private Sub Form_Load()'对于二维散点图来说,第一列代表了X轴坐标,第二列代表了Y轴坐标'因此在定义二维数据时,第二维定义为0到1,第一维代表了第几点数据,可根据数据点数变化'下面以数据点数有21点为列子Dim MyData(20, 1) As Double'-----x轴坐标值-----Y轴坐标值----------MyData(0, 0) = 0: MyData(0, 1) = 180 '本句代表了:第一点数据的X轴坐标为0,Y轴坐标为180MyData(1, 0) = 6: MyData(1, 1) = 60MyData(2, 0) = 8: MyData(2, 1) = 60MyData(3, 0) = 11: MyData(3, 1) = 0MyData(4, 0) = 16: MyData(4, 1) = 0MyData(5, 0) = 19: MyData(5, 1) = 60MyData(6, 0) = 25.8: MyData(6, 1) = 60MyData(7, 0) = 28.8: MyData(7, 1) = 0MyData(8, 0) = 31.8: MyData(8, 1) = 60MyData(9, 0) = 40.3: MyData(9, 1) = 60MyData(10, 0) = 43.3: MyData(10, 1) = 0MyData(11, 0) = 93.3: MyData(11, 1) = 0MyData(12, 0) = 96.3: MyData(12, 1) = 60MyData(13, 0) = 99.3: MyData(13, 1) = 0MyData(14, 0) = 105.3: MyData(14, 1) = 0MyData(15, 0) = 135.3: MyData(15, 1) = 0MyData(16, 0) = 144.3: MyData(16, 1) = 180MyData(17, 0) = 148.8: MyData(17, 1) = 270MyData(18, 0) = 405.03: MyData(18, 1) = 270MyData(19, 0) = 409.53: MyData(19, 1) = 180MyData(20, 0) = 564.17: MyData(20, 1) = 180'波形图外观设置With MSChart1.TitleText = "速度 m/min"' '设置图线的外观.Plot.SeriesCollection(1).Pen.Width = 30.Plot.SeriesCollection(1).Pen.Style = VtPenStyleSolid' '设置XY轴.Plot.Axis(VtChAxisIdX).ValueScale.Auto = False.Plot.Axis(VtChAxisIdY).ValueScale.Auto = False'// 设置最大值.Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 600.Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 300'// 设置最小值.Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0.Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0'//.Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 6 'X轴主要网格数量 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 'Y轴主要网格数量 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 0 'X轴次要网格数量 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 0 'Y轴次要网格数量 .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted.Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleDottedMSChart1.Plot.AutoLayout = FalseMSChart1.Plot.UniformAxis = FalseMSChart1.chartType = VtChChartType2dXY '设置图形为二维散点图MSChart1.ChartData = MyData '数据End WithEnd Sub运行后的效果图如下MSCHART的二维散点图对于实际工作是有很大用途的,例如数据采集中,实现时间变量的曲线等等.希望这个例子对大。
MSChart
・
3 6・
矿 业 科 学 技 术
20 0 2年第 2期
MS h r 图表 控件在 数据监 控 系统 中 的应用 C at
贺 莉
( 徽理工大学 电气工程系 ) 安
摘 要 : 本文描 述 了一种 基 于 VB . 6 0的图表 控件 MS h r C at的属 性 、 件和 方 法 . 着重 介 绍 了如何 利 用 事 并
31 数据 库设计 . 在 使 用 MS h r 表 控 件 显 示 数 据 的 变 化 图 C at图
便于 分析对 简 介 C at
使用 MS h r 控 件 显示 图表 可 以清楚 地知 道 C at 具 体的数据信 息的变化 趋势 。 使用 MS h r 控件 在 C at 前, 需先添 加此控 件。 单击[ 工程] [ l部件 ]在 选项 卡 .
* C a t y e属 性 : 定 图 表 的 类 型 。 h rT p 指
* C lmn o n 属 性 : 定 图 表 数 据 的 列 数 . ou C u t 指 即行 标 题 。 * R wC u t 性 : 定 图 表 数 据 的 行 数 . 列 o on 属 指 即
标题 。
可。0 B 即对 象链 接 与 嵌 入式 数 据库 ( j t I D E Obe c
Li k n d Em b d i g Da a a e 。 n i g An e dn tb s )
即可 视化数 据管理 器( s aa 创建 的。 Vi t ) D
从 V sa ai 6 0菜 单 上 单 击 E I 程 序 ]f iu l sc . B #接 -
了解设 备运行 情况 和各项 参数 . 保 生产 及工 作 区 确 域 的安全 , 利用 VB提 供的通信 控件 MS o C mm 开发 了一套 主从分 布式智能 继电保护 监控 系统 。在 监控 系统 中 , 片机主 要完成实时 数据采 集 . 单 被采集数 据
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
某个油田的区块做横坐标,井口数做纵坐
标而形成的“井口数统计图”为例,如图
1所示。
图1 井口数统计图
在此图中,由于区块过多,显示得不清楚,完全分不出哪个区块
对应的数值。解决这样的问
题,操作步骤为:
(1)将区块用编码表
示,如图2所示。
(2)用CommandButton
按钮,显示编码所表示的区
图2 井口数统计数据编码图
If Not IsNull(mRecordset1.Fields(1).Value) Then
js = js + mRecordset1.Fields(1).Value
End If
MRecordset1.Close
mRecordset_main.MoveNext
Wend
End With
(2)区块大于10个时的具体代码:
.RowLabel = ""
Else
.RowLabel = mRecordset_main!qk
'行显示的内容(油田区块)
End If
If Not IsNull(mRecordset1.Fields(0).Value) Then
k = k + mRecordset1.Fields(0).Value
End If
网络纵横
2008年第9期 146
VB环境下MSChart控件的应用与研究
李旭东
(山东胜利职业学院)
摘 要 在Visual Basic 6.0环境下,MSChart控件还有些不能实现的功能,如横坐标的内容显示不清楚,MSChart控件的宽度如何自 动调整以及调整后如何显示看不见的部分。本文主要针对以上问题,就如何改进及应用MSChart控件进行了探讨。
'行数 (总共有
多少行)
147
2 0 0 8年第9期
网络纵横
While Not mRecordset_main.EOF j=j+1 sql1 = "select count(jh),sum(sjjs) from p_cx_tj where qk='" & mRecordset_main!qk & "'" mRecordset1.Open sql1, mobjCnn .row = j if IsNull(mRecordset1.Fields(0).Value) Then .Data = 0 Else .Data = mRecordset1.Fields(0).Value '行数据值(总记录个数) End If .RowLabel = j if IsNull(mRecordset_main!qk) Then Mmsgbox = Mmsgbox & " " & j & " " & "" Else Mmsgbox = Mmsgbox & " " & j & " " & mRecordset_main!qk '行显示的内 容(区块) End If If Not IsNull(mRecordset1.Fields(0).Value) Then k = k + mRecordset1.Fields(0).Value End If If Not IsNull(mRecordset1.Fields(1).Value) Then js = js + mRecordset1.Fields(1).Value End If mRecordset1.Close mRecordset_main.MoveNext Wend End With 4.2 将MSChart控件与Hscroll控件绑定具体代码 Private Sub HScroll1_Change() Dim j As Long, isn As Integer
(收稿日期:2008·06·24)
(接119页)周期内(设其最小周期为N)实现相位与要求的脉冲完 全吻合。改进后的小数分频第K+1次脉冲相位差可以表示为:
将频率合成器的输出脉冲可能引起的最大时偏从原有F-NPLL结构的 一个基准时钟 降低到0.5 。这种电路具有结构简单、易于实现 和集成、非常适合ASIC设计等优点。
HScroll1.Visible = False
Else
MSChartTJ.Width = 280 * mRecordset_main.RecordCount
HScroll1.Visible = True
End If
With MSChartTJ
'井口数直方图
.RowCount = mRecordset_main.RecordCount
由(2)式 ̄(6)式的推导可知,改进的小数分频器的最大时偏
小于等于0.5 ,即相位差始终满足
,相位杂散获得很大
程度的减小。
3 结论
小数分频在不改变降低基准频率的情况下提高频率分辨力,解决 了转换速率和频率分辨率之间的矛盾,改进的小数分频进一步减小了 相位杂散,提高了小数分频的瞬时脉冲频率的精度。本文作者创新 点:采用以比较器和常数寄存器为主的电路结构改进的小数分频技术
5 结论
MSChart控件是一个比较复杂的技术。对VB中的控件而言,除了 前面自身内置的几个属性,一些功能也可以借助其它控件来辅助实 现。另外,在具体的编程过程中,可能还要根据自己具体的要求来做 某些此控件本身无法完成的事情。该方法已经成功应用于胜利企业版 IDDS软件中,取得了良好的效果。
参考文献
2005.4
(收稿日期:2008·07·09)
(接116页)分析产量下降的主要原因应是洗井造成地层污染。由于 距注水井只有150m左右,不宜实施水力压裂,2007年12月46日对该 井实施冲击波解堵,在机采参数不变的情况下,产液量达17.4m3/d, 产油量从0.7t/d上升到3.7t/d。该井自2007年12月实施冲击波解堵以 后,没有采取其它措施,已累计增油2199.7t。
'行数 (总共有
多少行)
While Not mRecordset_main.EOF
j=j+1
sql1 = "select count(jh),sum(sjjs) from p_cx_tj where qk='" &
mRecordset_main!qk & "'"
mRecordset1.Open sql1, mobjCnn
首先新建一个窗体,选择“工程”菜单中的“部件”,在弹出的 对话框中找到“Microsoft Chart Control 6.0(OLEDB)”,将其前面的 复选框选中点击“应用”,后“确定”,那么在“工具箱”中就显示 此控件了。这样就可以将MSChart控件放到窗体合适的位置了,同时 就可以对它做任意的操作了。
5 结论与认识
(1)冲击波解堵工艺现场应用成功率较高,为物理法解堵的首 选工艺。
(2)选井过程中,要找出油井产量下降的主要原因,如属于钻 井泥浆污染、油井结垢、洗井堵塞等机械杂质及有机垢造成的油水井 近井地带污染,其实施效果更好。
(3)选层过程中,要分析和考虑储集层的孔/渗/饱特性,同时要 充分利用油水井的动态监测资料,科学合理的选井选层,做到有的放 矢。
块即“区块与编码的对照表”,如图3所示。
图3 区块与编码的对照表
3 MSChart控件自动调整的实现方法
对应数据很多时,可以将MSChart控件本身的宽度改变。同时为 了能看到变宽后的内容还使用了Hscroll控件来控制,Hscroll控件是水 平滚动条,完全可以和MDI 窗体上的滚动条一样的使用。实现方法 操作步骤为:①将MSChart控件的宽度(Width)属性随数据改变;②将 MSChart控件与Hscroll控件绑定。
If mRecordset_main.RecordCount > 10 Then '防止行数多了时,显示不开
CommandJKS.Visible = True '按钮能用
If 280 * mRecordset_main.RecordCount < 10425 Then
MSChartTJ.Width = 10425
.row = j
If IsNull(mRecordset1.Fields(0).Value) Then
.Data = 0
Else
.Data = mRecordset1.Fields(0).Value
'行数据值(总记录个数)
End If
If IsNull(mRecordset_main!qk) Then
[1] Steven Holzner.VisualBasic 6技术内幕[M].北京:机械工业出版
社,1999
[2] 丁爱萍 . VisualBasic 程序设计 .西安:西安电子科技大学出版
社, 2004-06-01
[3] 高春艳等. Visual Basic开发技术大全 . 北京:人民邮电出版社,
4 经济效益分析
从2005年6月至2007年6月底,在GJ、MTZ、WZT等3个油田实施 冲击波解堵,共15井次,其中Z2-22、G6-55两口井基本无效,有效 12井次,措施有效率80%,累计增产76万元,投入产出比约为1:32.5,经 济效益十分显著。
isn = HScroll1.Max j = HScroll1.Value + MSChartTJ.Left MSChartTJ.Left = MSChartTJ.Left - j End Sub Private Sub HScroll1_Scroll() MSChartTJ.Left = 0 - HScroll1.Value End Sub 4.3 用CommandButton按钮,显示编码所表示的区块即“区块与编码 的对照表” 在给MSChart控件赋值时,已经将Mmsgbox做成一个字符串,并 且是Public类型的。具体代码如下: Private Sub CommandJKS_Click() MsgBox Mmsgbox, vbOKOnly, "区块与编号的对比" End Sub
的,直接显示区块真正的名称,不需要对区块进行编码表示。 设当前MSChart控件的name为MSChartTJ;用到的数据记录集为