VB6 里MSCHART 画两条曲线

合集下载

vb的chart用法

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作为数据源。

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

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

某个油田的区块做横坐标,井口数做纵坐
标而形成的“井口数统计图”为例,如图
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控件进行了探讨。

VB6.0中通过MSChart控件调用数据库

VB6.0中通过MSChart控件调用数据库

《VB6.0中通过MSChart控件调用数据库》VB6.0中的MSChart控件是一个功能强大的高级图表工具,拥有丰富的图表绘制功能,可显示二维和三维的棒图、区域图、线形图、饼图等多种常用图表。

近日我为了在双击图表的某个区域时将与该区域相对应的数据库的内容在DataGrid控件上显示出来,遇到了许多困难,最后用一个自定义的变量SelectSeries解决了问题,具体方法如下:设数据库名称为“学生信息”,有一Access表“学生成绩”,其内容为一个班学生的考试成绩,包括学号、姓名、成绩3个字段,成绩字段格式是字符型,值为“优”、“良”、“中”、“差”中的一个。

窗体Form1包括一个MSChart控件McScore,类型为二维饼图,用于显示每种成绩的学生数;一个ADO控件AdScore用于连接数据库;一个DataGrid控件DgScore用于以表格形式显示数据库内容。

工作过程为:双击饼图的某个区域,则DgScore显示相应成绩的学生名单。

代码如下:Option ExplicitDim SelectedSeries as Integer ′自定义变量Dim Rs() as String ′提取记录集用的字符串数组Private Sub Form_Load()′设定DataGrid控件的数据源DgScore.DataSource=″AdScore″′设定ADO控件的连接字串和初始的记录源,即显示内容AdScore.ConnectString=″Provider=Microsoft.OLEDB.3.51;Persist_Security Info=False;Data Source=学生信息″AdScore.RecordSource=″selet *from学生成绩order by成绩″AdScore.Refresh′预设好提取记录用的SQL语句Rs(1)=″select*from学生成绩where成绩=″+Chr(34)+″优″+_Chr(34)+″order by成绩″Rs(2)=″select *from学生成绩where成绩=″+Chr(34)+″良″+_Chr(34)+″order by成绩″Rs(3)=″select *from学生成绩where成绩=″+Chr(34)+″中″+_Chr(34)+″order by 成绩″Rs(4)=″select *from学生成绩where成绩=″+Chr(34)+″差″_Chr(34)+″order by成绩″End SubPrivate Sub McScore_SeriesSelected(Series as Integer,MouseFlags as _Integer,Cancel as Integer)SelectedSeries=SeriesEnd SubPrivate Sub McScore_PointSelected(Series as Integer,DataPoint as_Integer,MouseFlags as Integer,Cancel as Integer)SelectedSeries=SeriesEnd SubPrivate Sub McScore_Db1Click()′改变ADO控件的记录源并刷新Adoc1.RecordSource=Rs(SeletedSeries) Adoc1.RefreshEnd Sub(湖南高文杰)。

mschart控件使用详解

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对象。

关于vb中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画曲线——精选推荐

VB画曲线——精选推荐

在工控制软件中,实时曲线的绘制用途非常的广泛,它可以很直观的显示出监控数据的变化值和变化趋势。

在VB中实现曲线的绘制有很多种方法,本文介绍一种非常简单的方法来实现实时曲线的绘制。

在VB中实现实时曲线的绘制,要利用VB的PictureBox(图像)控件,和画线函数line(x1,y1)-(x2,y2)。

PictureBox控件,可以作为一个“容器”,在它的里面可以包含很多的对象。

也可以执行很多VB的内部函数。

要实现实时曲线的绘制,肯定要有外部实时数据的输入,这里假设是有一个数据从计算机的串口输入定义该数据变量为DataFromCom。

实时曲线反映的就是该数据。

打开VB6.0中文版,新建一个项目和窗体,修改窗体的属性,将“Heigh”修改为:8000,“Width”修改为在窗体中放如一个PictureBox控件。

然后重新定义PictureBox控件的一些基本属性,在VB中选中PictureBox控件,直接在它的属性框中,修改一些属性参数。

“名称”改为Pic。

“AutoRedraw”改为:True。

“BackColor”改为:&H00004000&(墨绿色背景颜色)。

”Heigh”改为:5000。

“Width”改为:8000。

如图1所示:然后要重新定义PictureBox控件的坐标系。

图像框的默认坐标系,是从左上角开始的,不符合我们的画线要求。

修改坐标系的目的是让曲线从图像框的左边正中间,开始画线。

修改图像框的坐标系,这里定义一个过程PicScale(),代码如下:Private Sub PicScale(picX As PictureBox)picX.Scale (0, PicX.ScaleHeight)-(picX.ScaleWidth, -PicX.ScaleHeight)End Sub一般的实时曲线显示的时候在屏幕的正中间有一条基准线,这里也要画出这条基准线,用一个过程PicMidleLine()来实现,代码如下:Private Sub PicMidleLine( picX As PictureBox)picX.Line (0, 0)-(picX.ScaleWidth, 0), vbGreen '画出中线End Sub要画一条实时曲线,坐标轴的设定很重要,在这里把X轴设定为时间轴,Y轴设定为数据轴。

vb 图表控件mschart 的用法小结

vb 图表控件mschart 的用法小结
VtChChartType2dStep 7 2维阶梯图
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画曲线图

用VB画曲线图

'添加个picture1和command1Option ExplicitDim lngCenter As LongDim lngMax As LongDim lngPad&Dim PCurrent As POINT, PLast As POINTPrivate Type POINTx As Longy As LongEnd TypePrivate Sub Form_Load()lngCenter = (Picture1.Top + Picture1.Height) / 2lngMax = Picture1.HeightPLast.x = 0PLast.y = lngCenterDim i&For i = 0 To Picture1.Width Step 100Picture1.Line (i, 0)-(i, Picture1.Height), &HFFC0C0NextFor i = 0 To Picture1.Height Step 100Picture1.Line (0, i)-(Picture1.Width, i), &HFFC0C0NextPicture1.DrawWidth = 1.5Picture1.Line (0, lngCenter)-(Picture1.Width, lngCenter), vbBlue Picture1.DrawWidth = 1End SubPrivate Sub Timer1_Timer()PCurrent.x = PCurrent.x + 50RandomizePCurrent.y = Rnd * lngMaxPicture1.Line (PCurrent.x, PCurrent.y)-(PLast.x, PLast.y), vbRed PLast.x = PCurrent.xPLast.y = PCurrent.yEnd SubPrivate Sub Command1_Click()Timer1.Enabled = Not Timer1.EnabledEnd Sub效果图:如果需要带有点规律性可以将获得y的坐标稍加处理下:Private Function getRndY() As IntegerDim lngTmp%If intRnd = 0 ThenRandomizeintRnd = Rnd * 3 + 1End IfRandomizelngTmp = Rnd * lngCenterIf PLast.y > lngCenter ThengetRndY = lngCenter + lngTmpElsegetRndY = lngTmpEnd IfintCurRnd = intCurRnd + 1If intCurRnd > intRnd ThenRandomizeintRnd = Rnd * 3 + 1&nb ......Public Sub Draw_Sin _( _pic1 As PictureBox, _sngXFrom As Single, _sngXTo As Single, _)Dim x1 As Single, y1 As SingleDim x2 As Single, y2 As Singlex1 = sngXFromy1 = Sin(x1)For x2 = (sngXFrom + sngStep) To sngXTo Step 0.1y2 = Sin(x2)pic1.Line (ScaleX_MathToScreen(x1),ScaleY_MathToScreen(y1)) _-(ScaleX_MathToScreen(x2),ScaleY_MathToScreen(y2))x1 = x2y1 = y2NextEnd SubPrivate Function ScaleX_MathToScreen(sngX As Single) ScaleX_MathToScreen = 500+ sngX * 500End FunctionPrivate Function ScaleY_MathToScreen(sngY As Single)ScaleY_MathToScreen = 500- sngY * 500End FunctionOption ExplicitPrivate Sub Form_click()ClsDim i, j As SingleMe.Scale (-1, 10)-(25, -1) '定义坐标系,原点靠近左下角Line (-1, 0)-(25, 0) '画x轴Line (0, -1)-(0, 10) '画Y轴For i = -1 To 25 Step 1 '画X轴刻度If i <> 0 ThenLine (i, 0)-(i, 0.2)CurrentX = i - 0.3: CurrentY = -0.2Print iEnd IfNextFor j = -1 To 10 '画Y轴刻度If j <> 0 ThenLine (0, j)-(0.3, j)CurrentX = -0.7: CurrentY = j + 0.1Print jEnd IfNextCurrentX = -0.4: CurrentY = -0.2Print "0" '画原点CurrentX = 0.5: CurrentY = 9.5Print "Y"CurrentX = 24: CurrentY = 0.5Print "X"RandomizeCurrentX = 1: CurrentY = Format(Rnd * 10, "0.00")For i = 2 To 24Line -(i, Format(Rnd * 10, "0.00")) '这里是随机生成的数据!NextEnd Sub在Form1中加Picture1控件Option ExplicitPrivate Sub Form1.Picture1_click()ClsDim i, j As SingleMe.Scale (-1, 10)-(25, -1) '定义坐标系,原点靠近左下角with Form1.Picture1Line (-1, 0)-(25, 0) '画x轴Line (0, -1)-(0, 10) '画Y轴For i = -1 To 25 Step 1 '画X轴刻度If i <> 0 ThenLine (i, 0)-(i, 0.2)CurrentX = i - 0.3: CurrentY = -0.2Print iEnd IfNextFor j = -1 To 10 '画Y轴刻度If j <> 0 ThenLine (0, j)-(0.3, j)CurrentX = -0.7: CurrentY = j + 0.1Print jEnd IfNextCurrentX = -0.4: CurrentY = -0.2Print "0" '画原点CurrentX = 0.5: CurrentY = 9.5Print "Y"CurrentX = 24: CurrentY = 0.5Print "X"RandomizeCurrentX = 1: CurrentY = Format(Rnd * 10, "0.00")For i = 2 To 24Line -(i, Format(Rnd * 10, "0.00")) '这里是随机生成的数据!Nextend withEnd Sub还可以更完善.。

MSCHART的使用之vb中利用MSCHART控件画二维散点图

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的二维散点图对于实际工作是有很大用途的,例如数据采集中,实现时间变量的曲线等等.希望这个例子对大。

VB6的绘图方法与常用函数

VB6的绘图方法与常用函数

VB6的绘图方法与常用函数在VB6中,绘图是一项非常常见的操作。

它可以用于创建图形界面元素、绘制图表、设计游戏界面等各种应用场景。

本文将介绍VB6中的绘图方法和常用函数,以帮助您更好地理解和应用该技术。

绘图方法绘制直线在VB6中,可以使用Line函数绘制直线。

它的语法如下:Line (x1, y1)-(x2, y2), [color], [B]•(x1, y1)和(x2, y2)是直线的起点和终点坐标;•color是可选参数,用于指定直线的颜色;•B是可选参数,用于指定是否绘制虚线。

以下是一个示例:Private Sub Form_Pnt()Line (100, 100)-(200, 200), RGB(255, 0, 0), BFEnd Sub绘制矩形在VB6中,可以使用Rectangle函数绘制矩形。

它的语法如下:Rectangle (x1, y1)-(x2, y2), [color], [B], [BF]•(x1, y1)和(x2, y2)是矩形的左上角和右下角坐标;•color是可选参数,用于指定矩形的边框颜色;•B是可选参数,用于指定是否绘制虚线;•BF是可选参数,用于指定是否填充矩形内部。

以下是一个示例:Private Sub Form_Pnt()Rectangle (100, 100)-(200, 200), RGB(0, 255, 0), B,BFEnd Sub绘制圆形在VB6中,可以使用Circle函数绘制圆形。

它的语法如下:Circle (x, y), radius, [color], [B], [BF]•(x, y)是圆心的坐标;•radius是圆的半径;•color是可选参数,用于指定圆的颜色;•B是可选参数,用于指定是否绘制虚线;•BF是可选参数,用于指定是否填充圆的内部。

以下是一个示例:Private Sub Form_Pnt()Circle (150, 150), 50, RGB(0, 0, 255), , BFEnd Sub在VB6中,可以使用Ellipse函数绘制椭圆。

微软图表控件MsChart使用指南

微软图表控件MsChart使用指南

微软图表控件MsChart使用指南昨天在网上看到了微软发布了.NET 3.5框架下的图表控件,第一时间抓下来看了一下,发觉功能很强劲,基本上能想到的图表都可以使用它绘制出来,给图形统计和报表图形显示提供了很好的解决办法,同时支持Web和WinForm两种方式,不过缺点也比较明显,只能在最新的开发环境中使用,需要.Net 3.5 Sp1以及VS 2008的开发环境。

下面是下载地址:mework 3.5)–1.包含英文版,中文版。

上面提供的链接是中文版的,可以更改为英文版。

2.语言包:Microsoft Chart Controls for Microsoft .NETFramework 3.5 Language Pack3.Microsoft .NET Framework 3.5 的Microsoft 图表控件的语言包,包含23中语言。

4.Microsoft Chart Controls Add-on for Microsoft Visual Studio 2008–这个只有英文的,没找到中文的。

5.文档(Microsoft Chart Controls for .NET Framework Documentation)–这个只有英文的,没找到中文的。

6.WinForm 和的例子(Samples Environmentfor Microsoft Chart Controls)–这个只有英文的,没找到英文的。

7.Demo 下载:/mschart下了它的示例程序后,运行了一下,非常的强大,可以支持各种各样的图形显示,常见的:点状图、饼图、柱状图、曲线图、面积图、排列图等等,同时也支持3D样式的图表显示,不过我觉得最有用的功能还是支持图形上各个点的属性操作,它可以定义图形上各个点、标签、图形的提示信息(Tooltip)以及超级链接、Jav ascript动作等,而不是像其它图形类库仅生成一幅图片而已,通过这些,加上微软自己的Ajax框架,可以建立一个可以互动的图形统计报表了。

在vb中使用mschart来绘制excel图表

在vb中使用mschart来绘制excel图表

在Visual Basic中使用MSChart控件绘制Excel图表*依皮提哈尔·穆罕买提1,那斯尔江·吐尔逊1,热依曼·吐尔逊2(1.新疆大学数学与系统科学学院,新疆,乌鲁木齐,830046;2. 新疆大学信息工程学院,新疆,乌鲁木齐,830046)摘要:本文首先介绍如何使用Visual Basic中的MSChart控件,然后通过实例深入探讨利用MSChart控件绘制Excel数据源图表的方法。

关键词:Visual Basic;MSChart控件;Microsoft Excel数据表;图表中图分类号:文献标识码:AUsing MSChart Control Drawing Excel Chart in Visual Basic Iptihar.Muhammat1,Nasirjan.Tursun1,Reyima.Tursun(1.Mathematics and System Science Institute of Xinjiang University, Urumqi, Xinjiang, 830046)(2. Information Engineering Institute of Xinjiang University, Urumqi, Xinjiang, 830046)Abstract :This article discusses how to use the MSChart control and how that is used in the VB project to drawing Microsoft® Excel charts.Key words: MSChart Control;Chartdata ;Mirosoft Excel Sheets;Chart;Database1. 引言Visual Basic中的MSChart控件是一个功能强大的高级图表工具,拥有丰富的图表绘制功能,用它来可以显示二维和三维的棒图、区域图、线形图、饼图等多种常用图表。

vb的chart用法 -回复

vb的chart用法 -回复

vb的chart用法-回复VB的Chart用法VB(Visual Basic)是一种广泛应用于开发Windows应用程序的编程语言。

在VB中,Chart(图表)是一种强大的工具,它可以将数据以可视化的方式展示,帮助用户更好地理解和分析数据。

本文将一步一步回答关于VB的Chart用法的问题,并介绍如何创建、自定义和操作图表。

一. 创建图表1. 准备数据在创建图表之前,首先需要准备好要展示的数据。

数据可以来自于多种来源,如数据库、Excel表格或用户输入。

假设我们要展示某个城市每个月的销售额数据。

2. 添加Chart控件在VB的表单设计器中,可以找到Chart控件。

在工具箱中选择Chart控件,然后在表单上拖动鼠标以创建一个Chart控件的实例。

3. 设置Chart类型在Chart 控件的属性窗口中,可以设置Chart 类型。

常见的Chart 类型包括柱状图、折线图、饼图等。

根据数据的性质和需求,选择适合的Chart 类型。

4. 绑定数据将数据绑定到Chart 控件上,可以通过设置Chart 控件的DataSource 属性和DataMember 属性来实现。

DataSource 属性指向数据源,DataMember 属性指定要使用的数据表或数据集。

5. 添加数据系列在Chart 控件的Series 集合中,可以添加一个或多个数据系列。

数据系列代表图表中的一组数据,可以有不同的颜色和样式。

每个数据系列都关联到数据源的一列。

6. 设置图表区域可以设置图表的标题、轴标签、图例等,来更好地展示数据。

Chart 控件的Title 属性、ChartAreas 集合中的Axis 属性和Legend 属性都可以用来设置图表区域的样式和内容。

二. 自定义图表1. 修改图表类型在Chart 控件的属性窗口中,可以随时修改图表的类型。

例如,从柱状图切换到折线图,只需更改Chart 控件的Series 集合中的ChartType属性即可。

VB6里MSCHART画两条曲线

VB6里MSCHART画两条曲线

VB6⾥MSCHART画两条曲线⼀条曲线的代码如下:Dim MyData(12, 1) As Double'-----x轴坐标值-----Y轴坐标值----------MyData(0, 0) = 0: MyData(0, 1) = 180 '本句代表了:第⼀点数据的X轴坐标为0,Y轴坐标为180 MyData(1, 0) = 1: MyData(1, 1) = 960MyData(2, 0) = 2: MyData(2, 1) = 60MyData(3, 0) = 3: MyData(3, 1) = 0MyData(4, 0) = 4: MyData(4, 1) = 0MyData(5, 0) = 5: MyData(5, 1) = 60MyData(6, 0) = 6: MyData(6, 1) = 60MyData(7, 0) = 7: MyData(7, 1) = 0MyData(8, 0) = 8: MyData(8, 1) = 60MyData(9, 0) = 9: MyData(9, 1) = 60MyData(10, 0) = 10: MyData(10, 1) = 0MyData(11, 0) = 11: MyData(11, 1) = 0MyData(12, 0) = 12: MyData(12, 1) = 60'波形图外观设置With MSChart1.TitleText = "值"' '设置图线的外观.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 = 12.Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 1000'// 设置最⼩值.Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0.Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0'//.Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 12 'X轴主要⽹格数量.Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 10 '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 With我想再添加⼀条蓝⾊的谁能给下代码!急!!代码如下所⽰。

VB环境中绘制数据曲线图

VB环境中绘制数据曲线图

VB环境中绘制数据曲线图摘要:为了更好地为汛期气象服务提供有力的资料补充和保障,截至2010年底,通辽市气象局已建成区域自动气象站35个。

为使区域自动站在决策服务、预报预警调查等方面所提供的资料更加直观,本文介绍了利用Visual Basic软件编写程序,实现数据曲线绘制的方法和过程,VB6.0 提供了PictureBox 控件,利用该控件的属性和方法,可以把实时数据用曲线图的形式表达出来。

关键词:VB6.0实时数据曲线区域自动气象站在区域自动气象站中,当数据采集存储完成后,往往需要更直观的界面显示。

利用VB6.0 编程实现实时数据曲线的绘制与显示,可动态地监视某些关键气象要素值的变化情况与走向趋势,以便直观、便捷的进行分析来更好地做好气象服务工作。

基于以上的需求分析,将系统划分为4大功能模块。

1、数据库的连接。

该项需要实现与数据库的连接,在设置中,用户可以直接选择自己所在地的市局服务器。

以后进行的操作中将从所选服务器中进行气象要素数据的读取。

VB6.0实现SQLServer2000数据库的连接与断开的代码格式为:连接代码:Set conn=New ADODB.ConnectionSet rs = New ADODB.Recordsetconn.Open “Driver={SQL Server};Server=服务器IP或服务器名称;Database=数据库名称;Uid=用户名;Pwd=密码”断开代码:rs.CloseSet rs = Nothingconn.CloseSet conn = Nothing2、数据库内容的读取。

要把本辖区所有区域站数据逐一统计,在VB6.0的编程中要用到循环语句,例如要查询温度数据,我市现在数据库中存放的温度数据是小时数据,例如要查询单一站点某时间段内的温度数据,本文中是通过select 语句来实现的,主要语句描述为:select * from 表名where station=‘“ & 区站号&”‘and observetime between’” & 开始时间& “‘and’” & 结束时间&”‘“。

VB下开发设计实时的数据采集曲线

VB下开发设计实时的数据采集曲线

VB下开发设计实时的数据采集曲线1. 引言在笔者参与过的开发的机组轴瓦控制系统中,要求能够实时采集轴瓦转动速度值V,并能根据实时采集到的数据绘制出V在10分钟内变化的短期趋势图和一日内变化的长期趋势图,以便观测轴瓦转动的趋势情况,查看控制效果。

该系统在VB6.0环境下进行开发,开始时采用了VB包含的Activex控件技术绘制曲线,在效果不理想的情况下,笔者利用VB绘画函数,最终成功实现了实时数据采集曲线的绘制与显示。

笔者将以轴瓦实时采集速度值V的短期趋势图为例,谈一下实时采集曲线的设计与实现过程。

2. 绘图控件的选择系统开发初期,采用VB内所含的Activex控件技术来解决实时采集曲线的绘制问题。

VB控件中提供了外部Activex控件Mschart来给该应用程序添加图表功能,用它能创建包括条形、饼形、线形等不同类型的三维图表。

利用该控件,可对表中的所有项目进行完全控制,例如标题、图表、脚注、轴、数据点系列等等,甚至还能旋转图表,为每一元素加上背景、设置光源,把它们放在想要的地方。

本系统中需要实时测量轴瓦速度V的实际值,并根据实时更新的短期速度数据数组、长期速度数据数组分别绘制短期趋势曲线图与长期趋势曲线图,这两个趋势图均是速度值(Y轴)和时间(X轴)的关系曲线,并随着时间变动实时更新,以便观测。

短期趋势图的绘制,由于测量10分钟内的数据,每一秒测量一次,因此每10分钟内都有600个数据,为绘制曲线,还要赋予一个初值,所以速度短期数据定义为长度为601的数组。

将数据初始化后,利用Mschart控件得到如下图1所示的短期趋势模拟图。

该图的静态显示外观比较理想,但是每秒一次的数据更新使屏幕每秒钟都会引起由于重绘带来的闪烁,这大大降低了图形界面的可视性与美观性。

由此可见,M schart控件不太适用于绘制实时数据采集系统的相关曲线。

为了解决这个难题,笔者尝试利用了VB提供的绘画函数等简单易用的多媒体实现技术,并取得了非常好的效果,以下是我们的实现步骤。

用MicrosoftChartControls(MSChart)实现曲线图,并支持拖动放大到秒

用MicrosoftChartControls(MSChart)实现曲线图,并支持拖动放大到秒

用MicrosoftChartControls(MSChart)实现曲线图,并支持拖动放大到秒本文用MSChart实现Winform曲线图的绘制,本文结合自己的实际项目,每个点需要显示到秒(这也是本文需要解决的关键点),刚开始照着网上的例子实现了一下,样子是出来了,但是当数据一多并且显示到秒时用鼠标进行拖动放大页面会直接卡死,后来经过自己的一番探索和研究,终于把这个问题给解决了,故把整个实现过程记录下来,和大家分享一下。

在文章的后面附上了源码,源码有详细的代码注释,一些需要注意的属性设置都有说明,可以实现刻度到秒的拖动放大,两条红色分别我定义是Min和Max值基准,是为了表达一个区间的概念。

页面上绘制了一千个点,每个点上有相应的T oolTip提示。

代码没有做拆分,只是把整个创建及设置的流程给描述下来,是为了让需要的朋友更好的理解和使用,第一次写博文,希望大家给予指正与支持,谢谢。

附上效果图:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;usingSystem.Windows.Forms.DataVisualization.Charting; using Hyet.Dal;using Hxj.Model;using Hxj.Data;using System.Collections;using Hyet.BLL;namespace DigitalFactory.ReportForms{public partial class ChartInfo : Form{public ChartInfo(){InitializeComponent();InitializeChart();this.myChart.GetToolTipText = newEventHandler<ToolTipEventArgs>(myChart_GetToolTi pText);}private void InitializeChart(){myChart.ChartAreas.Clear();myChart.Series.Clear();#region 设置图表的属性//图表的背景色myChart.BackColor = Color.FromArgb(211, 223, 240); //图表背景色的渐变方式myChart.BackGradientStyle =GradientStyle.TopBottom;//图表的边框颜色、myChart.BorderlineColor = Color.FromArgb(26, 59, 105);//图表的边框线条样式myChart.BorderlineDashStyle = ChartDashStyle.Solid; //图表边框线条的宽度myChart.BorderlineWidth = 2;//图表边框的皮肤myChart.BorderSkin.SkinStyle = BorderSkinStyle.Emboss;#endregion#region 设置图表的标题Title title = new Title();//标题内容title.Text = '曲线图';//标题的字体title.Font = new System.Drawing.Font('Microsoft Sans Serif', 12, FontStyle.Bold);//标题字体颜色title.ForeColor = Color.FromArgb(26, 59, 105);//标题阴影颜色title.ShadowColor = Color.FromArgb(32, 0, 0, 0);//标题阴影偏移量title.ShadowOffset = 3;myChart.Titles.Add(title);#endregion#region 设置图例的属性//注意,需要把原来控件自带的图例删除掉this.myChart.Legends.Clear();Legend legend = new Legend('Default');legend.Alignment = StringAlignment.Center; legend.Docking = Docking.Bottom;legend.LegendStyle = LegendStyle.Column;this.myChart.Legends.Add(legend);// Add header separator of type linelegend.HeaderSeparator = LegendSeparatorStyle.Line; legend.HeaderSeparatorColor = Color.Gray;LegendCellColumn firstColumn = new LegendCellColumn();firstColumn.ColumnType = LegendCellColumnType.SeriesSymbol; firstColumn.HeaderText = 'Color';firstColumn.HeaderBackColor = Color.WhiteSmoke;myChart.Legends['Default'].CellColumns.Add(firstColu mn);// Add Legend Text columnLegendCellColumn secondColumn = new LegendCellColumn();secondColumn.ColumnType = LegendCellColumnType.Text;secondColumn.HeaderText = 'Name'; secondColumn.Text = '#LEGENDTEXT'; secondColumn.HeaderBackColor = Color.WhiteSmoke; myChart.Legends['Default'].CellColumns.Add(secondC olumn);// Add AVG cell columnLegendCellColumn avgColumn = new LegendCellColumn();avgColumn.Text = '#AVG{N2}';avgColumn.HeaderText = 'Avg'; = 'AvgColumn';avgColumn.HeaderBackColor = Color.WhiteSmoke; myChart.Legends['Default'].CellColumns.Add(avgColu mn);// Add Total cell columnLegendCellColumn totalColumn = new LegendCellColumn();totalColumn.Text = '#TOTAL{N1}';totalColumn.HeaderText = 'Total'; = 'TotalColumn'; totalColumn.HeaderBackColor = Color.WhiteSmoke; myChart.Legends['Default'].CellColumns.Add(totalCol umn);// Set Min cell column attributes LegendCellColumn minColumn = new LegendCellColumn();minColumn.Text = '#MIN{N1}';minColumn.HeaderText = 'Min'; = 'MinColumn';minColumn.HeaderBackColor = Color.WhiteSmoke; myChart.Legends['Default'].CellColumns.Add(minColu mn);// Set Max cell column attributes LegendCellColumn maxColumn = new LegendCellColumn();maxColumn.Text = '#MAX{N1}';maxColumn.HeaderText = 'Max'; = 'MaxColumn';maxColumn.HeaderBackColor = Color.WhiteSmoke; myChart.Legends['Default'].CellColumns.Add(maxColu mn);#endregion#region 设置图表区属性ChartArea chartArea = new ChartArea('Default');//设置Y轴刻度间隔大小chartArea.AxisY.Interval = 5;//设置Y轴的数据类型格式//belStyle.Format = 'C';//设置背景色chartArea.BackColor = Color.FromArgb(64, 165, 191, 228);//设置背景渐变方式chartArea.BackGradientStyle =GradientStyle.TopBottom;//设置渐变和阴影的辅助背景色chartArea.BackSecondaryColor = Color.White;//设置边框颜色chartArea.BorderColor = Color.FromArgb(64, 64, 64, 64);//设置阴影颜色chartArea.ShadowColor = Color.Transparent;//设置X轴和Y轴线条的颜色chartArea.AxisX.LineColor = Color.FromArgb(64, 64, 64, 64);chartArea.AxisY.LineColor = Color.FromArgb(64, 64, 64, 64);//设置X轴和Y轴线条的宽度chartArea.AxisX.LineWidth = 1;chartArea.AxisY.LineWidth = 1;//设置X轴和Y轴的标题chartArea.AxisX.Title = '时间';chartArea.AxisY.Title = '数值';//设置图表区网格横纵线条的颜色chartArea.AxisX.MajorGrid.LineColor =Color.FromArgb(64, 64, 64, 64);chartArea.AxisY.MajorGrid.LineColor =Color.FromArgb(64, 64, 64, 64);//设置图表区网格横纵线条的宽度chartArea.AxisX.MajorGrid.LineWidth = 1; chartArea.AxisY.MajorGrid.LineWidth = 1;//设置坐标轴刻度线不延长出来chartArea.AxisX.MajorTickMark.Enabled = false; chartArea.AxisY.MajorTickMark.Enabled = false;//开启下面两句能够隐藏网格线条//chartArea.AxisX.MajorGrid.Enabled = false;//chartArea.AxisY.MajorGrid.Enabled = false;//设置X轴的显示类型及显示方式chartArea.AxisX.Interval = 0; //设置为0表示由控件自动分配chartArea.AxisX.IntervalAutoMode = IntervalAutoMode.VariableCount;chartArea.AxisX.IntervalType = DateTimeIntervalType.Minutes;belStyle.IsStaggered = true;//chartArea.AxisX.MajorGrid.IntervalType = DateTimeIntervalType.Minutes;//belStyle.IntervalType = DateTimeIntervalType.Minutes;belStyle.Format = 'yyyy-MM-dd HH:mm:ss';//设置文本角度//belStyle.Angle = 45;//设置文本自适应chartArea.AxisX.IsLabelAutoFit = true;//设置X轴允许拖动放大chartArea.CursorX.IsUserEnabled = true; chartArea.CursorX.IsUserSelectionEnabled = true; chartArea.CursorX.Interval = 0;chartArea.CursorX.IntervalOffset = 0;chartArea.CursorX.IntervalType = DateTimeIntervalType.Minutes;chartArea.AxisX.ScaleView.Zoomable = true; chartArea.AxisX.ScrollBar.IsPositionedInside = false;//设置中短线(还没看到效果)//chartArea.AxisY.ScaleBreakStyle.Enabled = true;//chartArea.AxisY.ScaleBreakStyle.CollapsibleSpaceThr eshold = 47;//chartArea.AxisY.ScaleBreakStyle.BreakLineStyle = BreakLineStyle.Wave;//chartArea.AxisY.ScaleBreakStyle.Spacing = 2;//chartArea.AxisY.ScaleBreakStyle.LineColor = Color.Red;//chartArea.AxisY.ScaleBreakStyle.LineWidth = 10;myChart.ChartAreas.Add(chartArea);#endregion//线条2:主要曲线Series series = new Series('Default');//设置线条类型series.ChartType = SeriesChartType.Line;//线条宽度series.BorderWidth = 1;//阴影宽度series.ShadowOffset = 0;//是否显示在图例集合Legendsseries.IsVisibleInLegend = true;//线条上数据点上是否有数据显示series.IsValueShownAsLabel = true;//线条颜色series.Color = Color.MediumPurple;//设置曲线X轴的显示类型series.XValueType = ChartValueType.DateTime;//设置数据点的类型series.MarkerStyle = MarkerStyle.Circle;//线条数据点的大小series.MarkerSize = 5;myChart.Series.Add(series);//手动构造横坐标数据DataTable dataTable = new DataTable(); dataTable.Columns.Add('TheTime',typeof(DateTime)); //注意typeofdataTable.Columns.Add('TheValue', typeof(double)); //注意typeofRandom random = new Random(); //随机数DateTime dateTime = System.DateTime.Now;for (int n = 0; n < 3; n ){dateTime = dateTime.AddSeconds(10);DataRow dr = dataTable.NewRow();dr['TheTime'] = dateTime;dr['TheValue'] = random.Next(0, 101);dataTable.Rows.Add(dr);}for (int n = 3; n < 1000; n ){dateTime = dateTime.AddSeconds(30); DataRow dr = dataTable.NewRow();dr['TheTime'] = dateTime;dr['TheValue'] = random.Next(0, 101); dataTable.Rows.Add(dr);}//线条1:下限横线Series seriesMin = new Series('Min'); seriesMin.ChartType = SeriesChartType.Line; seriesMin.BorderWidth = 1;seriesMin.ShadowOffset = 0;seriesMin.IsVisibleInLegend = true;seriesMin.IsValueShownAsLabel = false; seriesMin.Color = Color.Red;seriesMin.XValueType = ChartValueType.DateTime; seriesMin.MarkerStyle = MarkerStyle.None; myChart.Series.Add(seriesMin);//线条3:上限横线Series seriesMax = new Series('Max');seriesMax.ChartType = SeriesChartType.Line; seriesMax.BorderWidth = 1;seriesMax.ShadowOffset = 0;seriesMax.IsVisibleInLegend = true;seriesMax.IsValueShownAsLabel = false; seriesMax.Color = Color.Red;seriesMax.XValueType = ChartValueType.DateTime; seriesMax.MarkerStyle = MarkerStyle.None; myChart.Series.Add(seriesMax);//设置X轴的最小值为第一个点的X坐标值chartArea.AxisX.Minimum =Convert.ToDateTime(dataTable.Rows[0]['TheTime']).To OADate();//开始画线foreach (DataRow dr in dataTable.Rows){series.Points.AddXY(dr['TheTime'], dr['TheValue']);seriesMin.Points.AddXY(dr['TheTime'], 15); //设置下线为15seriesMax.Points.AddXY(dr['TheTime'], 30); //设置上限为30}}private void myChart_GetToolTipText(object sender, ToolTipEventArgs e){if (e.HitTestResult.ChartElementType == ChartElementType.DataPoint){int i = e.HitTestResult.PointIndex;DataPoint dp = e.HitTestResult.Series.Points[i];e.Text = string.Format('时间:{0},数值:{1:F1} ', DateTime.FromOADate(dp.XValue), dp.YValues[0]); }}}}。

利用MsChart控件绘制多曲线图表

利用MsChart控件绘制多曲线图表

利⽤MsChart控件绘制多曲线图表在.Net4.0框架中,微软已经将Mschart控件集成了进来,以前⼀直在web下⾯⽤过,原来winform下的Mschart控件更加简单更加⽅便,今天我们⽤mschart绘制⼀个多曲线图,发现MsChart 的显⽰效果还是不错的,话不多说,直接上效果图:代码如下,供⼤家参考:public partial class FrmMain : Form{public FrmMain(){InitializeComponent();InitializeChart();this.Load += new EventHandler(FrmMain_Load);this.myChart.GetToolTipText += new EventHandler<ToolTipEventArgs>(myChart_GetToolTipText);}void FrmMain_Load(object sender, EventArgs e){float[][] data = new float[3][];//第⼀条数据data[0] = new float[10] { 1.3f, 2.5f, 2.1f, 3.3f, 2.8f, 3.9f, 4.3f, 3.6f, 4.2f, 3.6f };//第⼆条数据data[1] = new float[12] { -2f, -1.3f, 0.1f, 0.5f, -1.5f, 0.7f, 1f, 1.4f, 1.9f, 2f, 2.6f, 3.1f };//第三条数据data[2] = new float[10] { 7.8f, 9.2f, 6.5f, 8.3f, 9.0f, 5.9f, 6.3f, 7.2f, 8.8f, 9.8f };for (int i = 0; i < data.Length; i++){//横坐标时间DateTime dt = DateTime.Now.Date;Series series = this.SetSeriesStyle(i);for (int j = 0; j < data[i].Length; j++){series.Points.AddXY(dt, data[i][j]);dt = dt.AddDays(1);}this.myChart.Series.Add(series);}}private void myChart_GetToolTipText(object sender, ToolTipEventArgs e){if (e.HitTestResult.ChartElementType == ChartElementType.DataPoint){int i = e.HitTestResult.PointIndex;DataPoint dp = e.HitTestResult.Series.Points[i];e.Text = string.Format("时间:{0};数值:{1:F1} ", DateTime.FromOADate(dp.XValue),dp.YValues[0]);}}///<summary>///初始化Char控件样式///</summary>public void InitializeChart(){#region设置图表的属性//图表的背景⾊myChart.BackColor = Color.FromArgb(211, 223, 240);//图表背景⾊的渐变⽅式myChart.BackGradientStyle = GradientStyle.TopBottom;//图表的边框颜⾊、myChart.BorderlineColor = Color.FromArgb(26, 59, 105);//图表的边框线条样式myChart.BorderlineDashStyle = ChartDashStyle.Solid;//图表边框线条的宽度myChart.BorderlineWidth = 2;//图表边框的⽪肤myChart.BorderSkin.SkinStyle = BorderSkinStyle.Emboss;#endregion#region设置图表的TitleTitle title = new Title();//标题内容title.Text = "多曲线图演⽰";//标题的字体title.Font = new System.Drawing.Font("Microsoft Sans Serif", 12, FontStyle.Bold);//标题字体颜⾊title.ForeColor = Color.FromArgb(26, 59, 105);//标题阴影颜⾊title.ShadowColor = Color.FromArgb(32, 0, 0, 0);//标题阴影偏移量title.ShadowOffset = 3;myChart.Titles.Add(title);#endregion#region设置图表区属性//图表区的名字ChartArea chartArea = new ChartArea("Default");//背景⾊chartArea.BackColor = Color.FromArgb(64, 165, 191, 228);//背景渐变⽅式chartArea.BackGradientStyle = GradientStyle.TopBottom;//渐变和阴影的辅助背景⾊chartArea.BackSecondaryColor = Color.White;//边框颜⾊chartArea.BorderColor = Color.FromArgb(64, 64, 64, 64);//阴影颜⾊chartArea.ShadowColor = Color.Transparent;//设置X轴和Y轴线条的颜⾊和宽度chartArea.AxisX.LineColor = Color.FromArgb(64, 64, 64, 64);chartArea.AxisX.LineWidth = 1;chartArea.AxisY.LineColor = Color.FromArgb(64, 64, 64, 64);chartArea.AxisY.LineWidth = 1;//设置X轴和Y轴的标题chartArea.AxisX.Title = "横坐标标题";chartArea.AxisY.Title = "纵坐标标题";//设置图表区⽹格横纵线条的颜⾊和宽度chartArea.AxisX.MajorGrid.LineColor = Color.FromArgb(64, 64, 64, 64); chartArea.AxisX.MajorGrid.LineWidth = 1;chartArea.AxisY.MajorGrid.LineColor = Color.FromArgb(64, 64, 64, 64); chartArea.AxisY.MajorGrid.LineWidth = 1;myChart.ChartAreas.Add(chartArea);#endregion#region图例及图例的位置Legend legend = new Legend();legend.Alignment = StringAlignment.Center;legend.Docking = Docking.Bottom;this.myChart.Legends.Add(legend);#endregion}//设置Series样式private Series SetSeriesStyle(int i){Series series = new Series(string.Format("第{0}条数据", i + 1));//Series的类型series.ChartType = SeriesChartType.Line;//Series的边框颜⾊series.BorderColor = Color.FromArgb(180, 26, 59, 105);//线条宽度series.BorderWidth = 3;//线条阴影颜⾊series.ShadowColor = Color.Black;//阴影宽度series.ShadowOffset = 2;//是否显⽰数据说明series.IsVisibleInLegend = true;//线条上数据点上是否有数据显⽰series.IsValueShownAsLabel = false;//线条上的数据点标志类型series.MarkerStyle = MarkerStyle.Circle;//线条数据点的⼤⼩series.MarkerSize = 8;//线条颜⾊switch (i){case0:series.Color = Color.FromArgb(220, 65, 140, 240);break;case1:series.Color = Color.FromArgb(220, 224, 64, 10);break;case2:series.Color = Color.FromArgb(220, 120, 150, 20);break;}return series;}}Demo 分为WEB版本和WinForm版本,样式和图表内容很全,希望对⼤家有所帮助。

VC++6.0中MsChart的使用方法

VC++6.0中MsChart的使用方法

VC++6.0中MsChart的使用方法VC++6.0中MsChart的使用方法1.MSChart制图类1.1 添加MSChart控件MSChart是VC++6.0中自带的一个特殊控件类,用于绘制坐标曲线图。

如果要使用这个控件,则可以按下图的示意进行添加此控件。

1.2MSChart控件的使用方法首先在要使用的类的实现文件中包含如下头文件:#include "VcPlot.h"#include "VcAxis.h"#include "VcValueScale.h"#include "VcSeriesCollection.h"#include "VcSeries.h"#include "VcPen.h"#include "VcCategoryScale.h"#include "VcColor.h"#include "VcDataGrid.h"#include "VcBackdrop.h"#include "VcFill.h"#include "VcBrush.h"#include "VcDataPoints.h"#include "VcDataPoint.h"#include "VcDataPointLabel.h"#include "VcAxisTitle.h"#include "math.h"在要使用的类的头文件中包含:#include "mschart.h"本系统中按照如下函数调用来实现MSChart类绘制故障树重要度曲线的功能(CDrawImp是调用MSChart的类)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一条曲线的代码如下:Dim MyData(12, 1) As Double'-----x轴坐标值-----Y轴坐标值----------MyData(0, 0) = 0: MyData(0, 1) = 180 '本句代表了:第一点数据的X轴坐标为0,Y轴坐标为180MyData(1, 0) = 1: MyData(1, 1) = 960MyData(2, 0) = 2: MyData(2, 1) = 60MyData(3, 0) = 3: MyData(3, 1) = 0MyData(4, 0) = 4: MyData(4, 1) = 0MyData(5, 0) = 5: MyData(5, 1) = 60MyData(6, 0) = 6: MyData(6, 1) = 60MyData(7, 0) = 7: MyData(7, 1) = 0MyData(8, 0) = 8: MyData(8, 1) = 60MyData(9, 0) = 9: MyData(9, 1) = 60MyData(10, 0) = 10: MyData(10, 1) = 0MyData(11, 0) = 11: MyData(11, 1) = 0MyData(12, 0) = 12: MyData(12, 1) = 60'波形图外观设置With MSChart1.TitleText = "值"' '设置图线的外观.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 = 12.Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 1000'// 设置最小值.Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0.Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0'//.Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 12 'X轴主要网格数量.Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 10 '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 With我想再添加一条蓝色的谁能给下代码!急!!代码如下所示。

用!开头的注释是我加入的主要解释。

实现所需效果。

Dim MyData(12, 2) As Double '!加入1维就是增加一条线'-----x轴坐标值-----Y轴坐标值----------MyData(0, 0) = 0: MyData(0, 1) = 180 '本句代表了:第一点数据的X轴坐标为0,Y轴坐标为180MyData(1, 0) = 1: MyData(1, 1) = 960MyData(2, 0) = 2: MyData(2, 1) = 60MyData(3, 0) = 3: MyData(3, 1) = 0MyData(4, 0) = 4: MyData(4, 1) = 0MyData(5, 0) = 5: MyData(5, 1) = 60MyData(6, 0) = 6: MyData(6, 1) = 60MyData(7, 0) = 7: MyData(7, 1) = 0MyData(8, 0) = 8: MyData(8, 1) = 60MyData(9, 0) = 9: MyData(9, 1) = 60MyData(10, 0) = 10: MyData(10, 1) = 0MyData(11, 0) = 11: MyData(11, 1) = 0MyData(12, 0) = 12: MyData(12, 1) = 60'!为新加入的一条线赋值Dim i As IntegerFor i = 0 To 12MyData(i, 2) = 0.3 * MyData(i, 1)Next'波形图外观设置With MSChart1.TitleText = "值"' '设置图线的外观.Plot.SeriesCollection(1).Pen.Width = 30.Plot.SeriesCollection(1).Pen.Style = VtPenStyleSolid'!设置第二条线的外观.Plot.SeriesCollection(2).Pen.Width = 30.Plot.SeriesCollection(2).Pen.Style = VtPenStyleSolid' '设置XY轴.Plot.Axis(VtChAxisIdX).ValueScale.Auto = False.Plot.Axis(VtChAxisIdY).ValueScale.Auto = False'// 设置最大值.Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 12.Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 1000'// 设置最小值.Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0.Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0'//.Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 12 'X轴主要网格数量.Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 10 '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 = VtChChartType2dLine'!必须为线图,二维散点图只有一条线,用来表示散点分布情况'MSChart1.chartType = VtChChartType2dXY '设置图形为二维散点图MSChart1.ChartData = MyData '数据End With效果如下:成功加入了一条蓝色的。

多出来的红线是什么意思呢?横坐标的R1,R2...这些怎更改呢?拖一个mschart1到窗体上代码如下,全部粘贴覆盖。

Option ExplicitPrivate Sub Form_Load()Dim MyData(12, 2) As Double'-----x轴坐标值-----Y轴坐标值----------MyData(0, 2) = 100: MyData(0, 0) = 180 '本句代表了:第一点数据的X轴坐标为0,Y轴坐标为180MyData(1, 2) = 11: MyData(1, 0) = 960MyData(2, 2) = 112: MyData(2, 0) = 60MyData(3, 2) = 103: MyData(3, 0) = 0MyData(4, 2) = 44: MyData(4, 0) = 0MyData(5, 2) = 55: MyData(5, 0) = 60MyData(6, 2) = 66: MyData(6, 0) = 60MyData(7, 2) = 77: MyData(7, 0) = 0MyData(8, 2) = 28: MyData(8, 0) = 60MyData(9, 2) = 9: MyData(9, 0) = 60MyData(10, 2) = 110: MyData(10, 0) = 0MyData(11, 2) = 101: MyData(11, 0) = 0MyData(12, 2) = 112: MyData(12, 0) = 60'波形图外观设置With MSChart1.TitleText = "值"' '设置图线的外观.Plot.SeriesCollection(1).Pen.Width = 30.Plot.SeriesCollection(1).Pen.Style = VtPenStyleSolid.Plot.SeriesCollection(2).Pen.Width = 30.Plot.SeriesCollection(2).Pen.Style = VtPenStyleNull'不显示第二条绿色线,只要红蓝.Plot.SeriesCollection(3).Pen.Width = 30.Plot.SeriesCollection(3).Pen.Style = VtPenStyleSolid' '设置XY轴.Plot.Axis(VtChAxisIdX).ValueScale.Auto = False.Plot.Axis(VtChAxisIdY).ValueScale.Auto = False'// 设置最大值.Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 12.Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 1000'// 设置最小值.Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0.Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0'//.Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 12 'X轴主要网格数量.Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 10 '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 = VtChChartType2dLine '设置图形为线图MSChart1.ChartData = MyData '数据'设置R1-R13,其余以此类推。

相关文档
最新文档