VB 定义动态数组后无法在picture中画出曲线

Public Function sort(n As Integer) As String()
Dim i As Integer, ans() As String
Dim x, y As String
ReDim ans(1 To n) As String
For i = 1 To n
ans(i) = Form1.Textreceive0.Text
x = ans(i)
y = Mid(x, 5, 5)
Next i
ans(i) = y
sort = ans
End Function

Private Sub Cmdshow_Click()
Picture1.Line (0, 0)-(i, y), vbGreen
End Sub

Private Sub Form_Load()
Picture1.Scale (0, 9000)-(9000, 0)
Picture1.Line (0, 0)-(9000, 0), vbBlue
Picture1.Line (0, 0)-(0, 9000), vbBlue
Picture1.PSet (0, 0), vbRed
End Sub
不知道哪里错了,哪位大神帮忙看看

你的绘制命令在:
Private Sub Cmdshow_Click()
Picture1.Line (0, 0)-(i, y), vbGreen
End Sub

这个语句中的 i 和 y 没有声明,更没有赋值,所以默认为0和0,
这样绘制语句与下面等效:
Picture1.Line (0, 0)-(0, 0), vbGreen

另外,也没有与函数 Public Function sort(n As Integer) As String()
以及其中的数组发生联系?

这些应该有效果的?
Picture1.Scale (0, 9000)-(9000, 0)
Picture1.Line (0, 0)-(9000, 0), vbBlue
Picture1.Line (0, 0)-(0, 9000), vbBlue
Picture1.PSet (0, 0), vbRed

提示:
要绘制曲线,有两种方法:
1,不断地用 Pset 方法,绘制点,我们知道点的集合就可能构成曲线。
2,如果点与点之间距离比较大,就会看不到曲线效果,那么可以用直线连接两点,这样得到折线。或者缩小横轴的坐标刻度的比例。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-25
picure1.autoredraw属性设置为true.追问

试了,行不通。。。

追答

Private Sub Form_Load()

后面加下面这行。
picture1.autoredraw=true

追问

可以了。。但数据是动态的,怎么画出连续的曲线图呢??

追答

连续的画线啊。这另外一个问题了。
你要画曲线,我认为的做法是用函数按一定的间隔画出点连成线。

追问

我觉得数组定义那里还是错的。。能看看么