一个绘制Bezier曲线的问题,为什么不能给数组赋值?

mackos 2003-08-18 11:36:06
一个绘制Bezier曲线的问题,为什么不能给数组赋值?
鼠标单击时读取坐标信息,存入数组,根据四个点的坐标绘出相应的Bezier曲线
同样的算法,在.net下成功运行!
错误提示:“expected array”
程序如下

Option Explicit
Dim t As Single
Dim xt As Single
Dim yt As Single
Dim xs As Single
Dim ys As Single
Dim X(3) As Single
Dim Y(3) As Single
Dim i As Integer
Dim hit As Integer
Dim str As String
Private Sub cmdDraw_Click()
frm.Cls
If hit < 4 Then
MsgBox "控制点不够", , "控制点不够"
Else
For i = 0 To 20
t = i * 0.05
xs = xt
ys = yt
xt = (1 - t) * (1 - t) * (1 - t) * X(0) + 3 * (1 - t) * (1 - t) * t * X(1) + 3 * (1 - t) * t * t * X(2) + t * t * t * X(3)
yt = (1 - t) * (1 - t) * (1 - t) * Y(0) + 3 * (1 - t) * (1 - t) * t * Y(1) + 3 * (1 - t) * t * t * Y(2) + t * t * t * Y(3)
If i <> 0 Then
Line (xs, ys)-(xt, yt)
End If
Next i
End If
cmdDraw.Caption = "再来一次"
End Sub
Private Sub cmdOk_Click()
End
End Sub

Private Sub Form_Load()
hit = 0

End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)//每单击一次鼠标,就将坐标存入数组。
X(hit) = X//总是在这个地方出错
Y(hit) = Y//总是在这个地方出错
If hit = 4 Then
MsgBox "四个控制点就足够了", , "四个控制点就足够了"
hit = 0
Exit Sub
End If
If hit <> 0 Then
Line (X(hit - 1), Y(hit - 1))-(X(hit), Y(hit))
End If
hit = hit + 1
End Sub
...全文
53 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mackos 2003-08-19
  • 打赏
  • 举报
回复
太感谢了!
onlineboy 2003-08-19
  • 打赏
  • 举报
回复
数据名称冲突
X(hit) = X
将Dim X(3) As Integer 改为
Dim intX(3) As Integer 即可

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧