请高手解答

Littleming 2003-04-20 09:09:14
窗体组件是一个picturebox和一个button
以下代码为绘制正方体,错误原因是未处理的"system.ArgumentNullException"类
异常出现在system.drawing.dll中,请大师指点
Public Class Form1
Inherits System.Windows.Forms.Form
Dim p As System.Drawing.Graphics
Dim pen1 As System.Drawing.Pen
Dim math1 As System.Math
Dim p1, p2 As System.Drawing.PointF
Dim nn, col, h, r, n, flag As Single
Dim thx, thy, thz As Double
Dim x, y, z As Single
Const pi = 3.14159

Public Sub hueitu()
Dim gx, gy As Single
gx = 250 + x
gy = 180 + y
If flag = 0 Then p1.x = gx : p1.y = gy
flag = 1
p2.x = gx : p2.y = gy
p = PictureBox1.CreateGraphics
p.DrawLine(pen1, p1, p2)
End Sub

Private Sub rot_x()
Dim yw, zw As Single
yw = y : zw = z
y = yw * math1.Cos(thx) - zw * math1.Sin(thx)
z = yw * math1.Sin(thx) + zw * math1.Cos(thx)
End Sub

Private Sub rot_y()
Dim zw, xw As Single
zw = z : xw = x
x = zw * math1.Cos(thy) - xw * math1.Sin(thy)
z = zw * math1.Sin(thy) + xw * math1.Cos(thy)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Static ax(9), ay(9), az(9)
Static bx(9), by(9), bz(9)
PictureBox1.Refresh()
Dim th As Single
h = 90 : thy = 0.2 : thz = 0.4
flag = 0 : col = 0 : nn = 1
r = 90
n = 4
thx = 0.4
For th = 0 To 2 * pi + 0.1 Step 2 * pi / n
x = r * math1.Cos(th) : y = h : z = r * math1.Sin(th)
Call rot_y() : Call rot_x() : Call rot_z()
ax(nn) = x : ay(nn) = y : az(nn) = z
nn = nn + 1
Next th
flag = 0 : nn = 1
For th = 0 To 2 * pi + 0.1 Step 2 * pi / n
x = r * math1.Cos(th) : y = -h : z = r * math1.Sin(th)
Call rot_y() : Call rot_x() : Call rot_z()
bx(nn) = x : by(nn) = y : bz(nn) = z
nn = nn + 1
Next th
For nn = 1 To n
flag = 0 : x = ax(nn) : y = ay(nn)
Call hueitu()
x = ax(nn + 1) : y = ay(nn + 1)
Call hueitu()
x = bx(nn + 1) : y = by(nn + 1)
Call hueitu()
x = bx(nn) : y = by(nn)
Call hueitu()
x = ax(nn) : y = ay(nn)
Call hueitu()
Next nn
flag = 0
For nn = 1 To n + 1
x = ax(nn) : y = ay(nn) : z = az(nn)
Call hueitu()
Next nn
flag = 0
For nn = 1 To n + 1
x = bx(nn) : y = by(nn) : z = bz(nn)
Next nn
End Sub
Private Sub rot_z()
Dim xw, yw As Single
xw = x : yw = y
y = xw * math1.Cos(thz) - yw * math1.Sin(thz)
x = xw * math1.Sin(thz) + yw * math1.Cos(thz)

End Sub
End Class
...全文
74 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Montaque 2003-05-03
  • 打赏
  • 举报
回复
呵呵,pen没有实例化过当然会抱错。
Dim pen1 As System.Drawing.Pen 改为
Dim pen1 As New System.Drawing.Pen(Color.Red)
就可以了.
citylamp 2003-05-03
  • 打赏
  • 举报
回复
pen的使用有误,给你个实例:
Dim penexample As New Pen(Color.FromArgb(150, Color.Black), 4) '定义画笔
g.DrawLine(penexample, 230, 10, 330, 40) 'DrawLine画直线
Littleming 2003-05-03
  • 打赏
  • 举报
回复
这么简单的程序都没有人解答,你们是怎么在csdn混的?
zsms2 2003-04-28
  • 打赏
  • 举报
回复
呵呵,程序那么长,没人会想去认真的看啦,能不能是说的简单一点
youngby 2003-04-21
  • 打赏
  • 举报
回复
ing
up
believemyself 2003-04-21
  • 打赏
  • 举报
回复
up
Littleming 2003-04-21
  • 打赏
  • 举报
回复
楼上的!太贪了吧!

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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