【求助】怎么利用VB画折线图
vb吧
全部回复
仅看楼主
level 11
已经用VB读取了一个excel表,想利用表中一列的数据来制做折线图,用哪个控件?picturebox还是mschart?如果用的话,哪位能给说一下具体用法啊,我百度的资料都讲的不太明白(还是我理解力比较堪忧。。),或者哪位好心给个讲解的链接也行啊。如图
Private Sub Command1_Click()
CommonDialog1.CancelError = True
'设置标志
CommonDialog1.Flags = cdlOFNHideReadOnly
'设置过滤器
CommonDialog1.Filter = "全部文件|*.*|表格文件|*.xls|"
'设置缺省的过滤器
CommonDialog1.FilterIndex = 2
CommonDialog1.ShowOpen
Dim ExcelApp As Excel.Application
Set ExcelApp = CreateObject("excel.application")
ExcelApp.Workbooks.Open (CommonDialog1.FileName)
With MSFlexGrid1
.Rows = ExcelApp.Sheets(1).UsedRange.Rows.Count
.Cols = 100
For r = 0 To .Rows - 1
For c = 2 To .Cols
If c = 2 Then
.TextMatrix(r, c - 2) = ExcelApp.Sheets(1).Cells(r + 1, c - 1)
Else
.TextMatrix(r, c - 2) = ExcelApp.Sheets(1).Cells(r + 1, c - 1)
End If
Next
Next
End With
ExcelApp.Quit
End Sub
这是读取的程序
2015年12月01日 08点12分 1
level 11
。。。
2015年12月01日 08点12分 2
level 13
围观[滑稽]前排
出售瓜子花生
2015年12月01日 08点12分 3
level 13
mschart是输入,picturebox是输出吧 。。画折线图用line方法
2015年12月01日 08点12分 4
level 11
picturebox.line (x1,y1)-(x2,y2)
2015年12月01日 09点12分 5
level 13
VB自带的方法Line与Print 简单实用用 但是表现出来的使用价值却非一般
加上参数 B BF Line又变成画柱状图的工具了
加上Timer定时器 动态连续卷动数据 实时观察 小兵立大功Line功能太够了
2015年12月01日 11点12分 6
[吐舌]
2015年12月02日 09点12分
层主,能否把这个图的代码发我看一看啊,我研究一下[吐舌],感激不尽啊
2015年12月02日 14点12分
能把这个图的代码发给我一份吗,学习学习感激涕零。我的扣扣有些[email protected]
2016年12月27日 03点12分
也正在学习这方面知识,能给我也发一份吗,大神[email protected][哈哈]
2018年08月02日 01点08分
level 13
用控件的话就用mschart
2015年12月01日 12点12分 7
level 12
楼主~ 你的excel 里面有图片吗??能把图片读出来吗 我昨天弄了一天 也没想到直接把图片弄出来的办法 你用的DataGrid 还是MSHFGRID?
2015年12月02日 06点12分 8
没有图片,我也不知道怎么弄图片
2015年12月02日 09点12分
回复
全球变冷zz8
:哦,我发现显示图片的都是用了图片控件,不然表格显示图片不好控制图片位置
2015年12月02日 09点12分
level 5
首先展示一下程序截图。
因为程序的文字涉及隐私,打了马赛克。
最简单的,根据x,y数值计算点坐标,然后用line方法画线,就是折线图了。
我这里还加了曲线拟合和抗锯齿,是Gdi+模块中的一些方法。
2018年08月04日 13点08分 9
大佬还在贴吧吗
2022年03月07日 13点03分
大佬还在吗?求[email protected]
2022年03月11日 05点03分
大佬求教程,感谢大佬
2022年10月04日 08点10分
level 5
我从程序里节选的绘图函数,做了一些主要的注释,希望会有帮助
Public Sub Refresh()
On Error Resume Next
PicDraw.Cls
InitGDIPlus
GdipCreateFromHDC PicDraw.hDC, Graphics
GdipSetSmoothingMode Graphics, SmoothingModeAntiAlias '抗锯齿
VPPX = (ScaleWidth / (maxX - minX)) '计算每单位X需要绘制的像素数
VPPY = (ScaleHeight / (maxY - minY))
Dim pts() As POINTL
ReDim pts(UBound(ArrX))
For j = 0 To UBound(ArrYs)
If Chk(j).Value Then
For i = 0 To UBound(ArrX)
pts(i).x = (ArrX(i).coorX - minX) * VPPX '将X, Y数值计算成绘图区域的坐标值
pts(i).y = 0.75 * (ScaleHeight - (ArrYs(j).coorY(i) - minY) * VPPY) + ScaleHeight / 8
Next i
GdipCreatePen1 ArrYs(j).linecolor, 1, UnitPixel, pen
If DrawBezier.Checked Then
GdipDrawCurve2I Graphics, pen, pts(0), UBound(pts) + 1, Tensi 'GDI+中的拟合曲线方法
Else
GdipDrawLinesI Graphics, pen, pts(0), UBound(pts) + 1 'GDI+中的话直线方法,用VB自带的Line函数也可以
End If
GdipDeletePen pen
End If
Next j
GdipDeleteGraphics Graphics
TerminateGDIPlus
End Sub
2018年08月04日 14点08分 10
技术帖
2018年08月04日 14点08分
level 2
楼主还在贴吧吗
2022年03月04日 12点03分 11
在啊,但是全忘光了[黑线]
2022年03月06日 05点03分
@贴吧用户_0Et917U 大佬还有当年那个小软件吗,就导入excel数据的那个
2022年03月06日 06点03分
2022年03月06日 12点03分
1