返回主页 画笔颜色 画笔粗细 画布颜色
Public Class Form5 Inherits System.Windows.Forms.Form Friend WithEvents PictureBoxl As System.Windows.Forms.PictureBox #Region "" Public Sub New() MyBase.New() ' 此调用是设计器所必需的。 InitializeComponent() ' 在 InitializeComponent() 调用之后添加任何初始化。 End Sub ' Protected Overloads Overrides Sub Dispose(ByVal disposposing As Boolean) ' End Sub ' Friend WithEvents pictureBoxl As System.Windows.Forms.PictureBox ' Friend WithEvents Button1 As System.Windows.Forms.Button Private Sub lnitializeComponent() Me.PictureBox1.BackColor = System.Drawing.SystemColors.Desktop ' Me.PictureBox1.BorderStyle = New System.Windows.Forms.BorderStyle.Fixed3D Me.PictureBox1.Size = New System.Drawing.Size(408, 328) Me.PictureBox1.TabIndex = 0 Me.PictureBox1.TabStop = False ' Me.AutoSize = New System.Drawing.Size(16, 14) Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.PictureBox1}) Me.Name = "Forml" Me.Text = "远近法" Me.ResumeLayout(False) End Sub #End Region Dim p1, p2, p3, p4, p5, p6 As System.Drawing.Point Dim pp As System.Drawing.Graphics Dim pen1 = New System.Drawing.Pen(System.Drawing.Color.Red, 3) Dim P As System.Drawing.Graphics ' Dim Math1 As System.Math Dim Myp = New Pen(Color.Red, 5) Dim pen2 = New Pen(Color.Green, 3) Dim pen3 = New Pen(Color.Blue, 3) Dim mypen = New Pen(Color.Black, 3) '录笔 Dim Brush1 = New SolidBrush(Color.Red) '画刷红色 Dim Brush2 = New SolidBrush(Color.Green) '画刷禄色 Dim Brush3 = New SolidBrush(Color.Black) '画刷兰色 Dim x, y, z As Integer Dim i, j, x1, y1, x2, y2, ya, xa As Integer Dim gjpxx, gjpyy, gjpx, gjpy As Integer Dim dxp, dyp, tx0, ty0, xqq, yqq, wwx, wwy As Integer ' Dim F3 As New Form3 Dim g As System.Drawing.Graphics ' Inherits System.Windows.Forms.Form Const pi = 3.14159 Dim flag, col, r, ww, k1, k2, r1, r2, nn, h, n As Integer ' Dim x, y, z, cx, cy, cz, thx, thy, thz, mgx, mgy, osw, osh Dim cx, cy, cz, thx, thy, thz, mgx, mgy, osw, osh, xw, yw, zw Dim ed, od, eh Dim X_PingYi, Y_PingYi As Integer Dim xs1, ys2, zs3 As Single Dim px, py, pz As Single Dim h1 As Integer Private Sub Button3x_Click(sender As Object, e As EventArgs) Handles Button3x.Click '消隐 PictureBox1.Refresh() End Sub Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click ' p = PictureBox1.CreateGraphics '在相框显示图象 Static ax(9), ay(9), az(9) Static bx(9), by(9), bz(9) Dim th As Single PictureBox1.Refresh() ' h = 70 h = GaoDu.Text thy = 0.2 col = 0 : nn = 1 ' r = 80 r = BanJing.Text ' n=4 n = BianShuo.Text thx = 0.4 For th = 0 To 2 * pi + 0.1 Step 2 * pi / n x = r * Math.Cos(th) : y = h : z = r * Math.Sin(th) Call rot_y() : Call rot_x() ax(nn) = x : ay(nn) = y : az(nn) = z nn = nn + 1 Next th nn = 1 For th = 0 To 2 * pi + 0.1 Step 2 * pi / n x = r * Math.Cos(th) : y = -h : z = r * Math.Sin(th) Call rot_y() : Call rot_x() bx(nn) = x : by(nn) = y : bz(nn) = z nn = nn + 1 Next th For nn = 1 To n 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 For nn = 1 To n + 1 x = ax(nn) : y = ay(nn) : z = az(nn) Call hueitu() Next nn For nn = 1 To n + 1 x = bx(nn) : y = by(nn) : z = bz(nn) Call hueitu() Next nn End Sub Private Sub Button2_Click_1(sender As Object, e As EventArgs) Handles Button2.Click px = XPingYi.Text py = YPingYi.Text pz = ZPingYi.Text ' g = PictureBox1.CreateGraphics '在相框显示图象 Static ax(9), ay(9), az(9) Static bx(9), by(9), bz(9) Dim th As Single PictureBox1.Refresh() ' h = 70 h = GaoDu.Text thy = 0.2 col = 0 : nn = 1 ' r = 80 r = BanJing.Text ' n=4 n = BianShuo.Text thx = 0.4 For th = 0 To 2 * pi + 0.1 Step 2 * pi / n x = r * Math.Cos(th) : y = h : z = r * Math.Sin(th) Call rot_y() : Call rot_x() : Call para(px, py, pz) 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 * Math.Cos(th) : y = -h : z = r * Math.Sin(th) Call rot_y() : Call rot_x() : Call para(px, py, pz) 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 For nn = 1 To n + 1 x = ax(nn) : y = ay(nn) : z = az(nn) Call hueitu() Next nn For nn = 1 To n + 1 x = bx(nn) : y = by(nn) : z = bz(nn) Call hueitu() Next nn End Sub Private Sub Button3_Click_1(sender As Object, e As EventArgs) Handles Button3.Click xs1 = s1_bl.Text ys2 = s2_bl.Text zs3 = s3_bl.Text Static ax(9), ay(9), az(9) Static bx(9), by(9), bz(9) PictureBox1.Refresh() Dim th As Single ' h = 100 h = GaoDu.Text thy = 0.2 flag = 0 : col = 0 : nn = 1 ' r = 90 r = BanJing.Text ' n = 4 n = BianShuo.Text thx = 0.4 For th = 0 To 2 * pi + 0.1 Step 2 * pi / n x = r * Math.Cos(th) : y = h : z = r * Math.Sin(th) Call rot_y() : Call rot_x() Call bl(xs1, ys2, zs3) ax(nn) = x : ay(nn) = y : az(nn) = z nn = nn + 1 Next th nn = 1 For th = 0 To 2 * pi + 0.1 Step 2 * pi / n x = r * Math.Cos(th) : y = -h : z = r * Math.Sin(th) Call rot_y() : Call rot_x() Call bl(xs1, ys2, zs3) 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 For nn = 1 To n + 1 x = ax(nn) : y = ay(nn) : z = az(nn) Call hueitu() Next nn For nn = 1 To n + 1 x = bx(nn) : y = by(nn) : z = bz(nn) Call hueitu() Next nn End Sub Private Sub Button4_Click_1(sender As Object, e As EventArgs) Handles Button4.Click Static ax(9), ay(9), az(9) Static bx(9), by(9), bz(9) Dim th As Single PictureBox1.Refresh() ' h = 70 h = GaoDu.Text thy = 0.2 : thz = 0.4 flag = 0 : col = 0 : nn = 1 ' r = 80 r = BanJing.Text ' n=4 n = BianShuo.Text thx = 0.4 For th = 0 To 2 * pi + 0.1 Step 2 * pi / n x = r * Math.Cos(th) : y = h : z = r * Math.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 * Math.Cos(th) : y = -h : z = r * Math.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) Call hueitu() Next nn End Sub Private Sub Button5_Click_1(sender As Object, e As EventArgs) Handles Button5.Click ' p = PictureBox1.CreateGraphics '在相框显示图象 Static ax(9), ay(9), az(9) Static bx(9), by(9), bz(9) Dim ps As Single Dim th As Single PictureBox1.Refresh() ed = 1000 : eh = 100 : od = 0 ' h = 70 h = GaoDu.Text thy = 1.5 col = 0 : nn = 1 ' r = 80 r = BanJing.Text h1 = 1 : ps = 1 ' n=4 n = BianShuo.Text thx = 1.0# For th = 0 To 2 * pi + 0.1 Step 2 * pi / n x = r * Math.Cos(th) : y = h : z = r * Math.Sin(th) Call rot_y() : Call rot_x() If ps = 1 Then Call pers() ax(nn) = x : ay(nn) = y : az(nn) = z nn = nn + 1 Next th x = 0 : y = h : z = 0 Call rot_y() : Call rot_x() If ps = 1 Then Call pers() ax(0) = x : ay(0) = y : az(0) = z nn = 1 For th = 0 To 2 * pi + 0.1 Step 2 * pi / n x = r * Math.Cos(th) : y = -h : z = r * Math.Sin(th) Call rot_y() : Call rot_x() If ps = 1 Then Call pers() bx(nn) = x : by(nn) = y : bz(nn) = z nn = nn + 1 Next th x = 0 : y = -h : z = 0 Call rot_y() : Call rot_x() If ps = 1 Then Call pers() For nn = 1 To n 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 For nn = 1 To n + 1 x = ax(nn) : y = ay(nn) : z = az(nn) Call hueitu() Next nn For nn = 1 To n + 1 If h1 = 0 Or bz(0) > 0 Then x = bx(nn) : y = by(nn) : z = bz(nn) Call hueitu() End If Next nn End Sub Private Sub Button7_Click(sender As Object, e As EventArgs) ' PictureBox1.Refresh() n = 36 pp = PictureBox1.CreateGraphics '在相框显示图象 ' g1 = PictureBox1.CreateGraphics Dim i As Integer Dim th, x(5), y(5), z(5), xx(5), yy(5), zz(5) As Double Dim xxx(5), yyy(5), zzz(5) As Double Dim x1, y1, z1, x2, y2, z2 As Double xx(0) = 150.0# : xx(1) = 200.0# : xx(2) = 210.0# : xx(3) = 60.0# : xx(4) = 150.0# yy(0) = -55 : yy(1) = -20.0# : yy(2) = 50.0# : yy(3) = 40.0# : yy(4) = -55.0# zz(0) = 0 : zz(1) = 0 : zz(2) = 0 : zz(3) = 0 : zz(4) = 0 For i = 0 To 4 xxx(i) = xx(i) : yyy(i) = yy(i) : zzz(i) = zz(i) Next For i = 1 To 4 For th = 0 To 2 * pi Step pi / n '36 'second x(i) = xxx(i) : y(i) = yyy(i) : z(i) = zzz(i) x1 = x(i) : y1 = y(i) : z1 = z(i) x(i) = x1 * Math.Cos(pi + pi / k1) + z1 * Math.Sin(pi + pi / k1) y(i) = y1 z(i) = -x1 * Math.Sin(pi + pi / k1) + z1 * Math.Cos(pi + pi / k1) xxx(i) = x(i) : yyy(i) = y(i) : zzz(i) = z(i) x2 = x(i) : y2 = y(i) : z2 = z(i) x(i) = x2 y(i) = y2 * Math.Cos(pi + pi / k1) - z2 * Math.Sin(pi + pi / k1) z(i) = y2 * Math.Sin(pi + pi / k1) + z2 * Math.Cos(pi + pi / k1) If th = 0 Then p1.X = 230 + Int(x(i)) p1.Y = 200 - Int(y(i)) Else p2.X = 230 + Int(x(0)) p2.Y = 200 - Int(y(0)) p3.X = 230 + Int(x(i)) p3.Y = 200 - Int(y(i)) pp.DrawLine(Myp, p2, p3) p2 = p3 End If Next th PictureBox1.Refresh() pp.DrawLine(Myp, p2, p3) p2 = p3 Next i '------------------------------------------- For j = 1 To 10 For th = 0 To 2 * pi Step pi / n '36 'second For i = 0 To 4 x(i) = xx(i) : y(i) = yy(i) : z(i) = zz(i) x1 = x(i) : y1 = y(i) : z1 = z(i) x(i) = x1 * Math.Cos(pi / k1) + z1 * Math.Sin(pi / k1) y(i) = y1 z(i) = -x1 * Math.Sin(pi / k1) + z1 * Math.Cos(pi / k1) xx(i) = x(i) : yy(i) = y(i) : zz(i) = z(i) x2 = x(i) : y2 = y(i) : z2 = z(i) x(i) = x2 y(i) = y2 * Math.Cos(pi / k1) - z2 * Math.Sin(pi / k1) z(i) = y2 * Math.Sin(pi / k1) + z2 * Math.Cos(pi / k1) If i = 0 Then p4.X = 230 + Int(x(i)) p4.Y = 200 - Int(y(i)) Else p5.X = 230 + Int(x(i - 1)) p5.Y = 200 - Int(y(i - 1)) p6.X = 230 + Int(x(i)) p6.Y = 200 - Int(y(i)) pp.DrawLine(Myp, p5, p6) End If Next i PictureBox1.Refresh() pp.DrawLine(Myp, p5, p6) Next th Next j End Sub '---绘图子程序 Public Sub hueitu() Dim gx, gy As Single gx = 250 + x ' gy = 180 + y gy = 300 + 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) p1 = p2 End Sub Public Sub rot_x() Dim yw, zw As Single yw = y : zw = z y = yw * Math.Cos(thx) - zw * Math.Sin(thx) z = yw * Math.Sin(thx) + zw * Math.Cos(thx) End Sub Public Sub rot_y() Dim xw, zw As Single zw = z : xw = x x = zw * Math.Cos(thy) - xw * Math.Sin(thy) z = zw * Math.Sin(thy) + xw * Math.Cos(thy) End Sub Public Sub rot_z() Dim xw, yw As Single xw = x : yw = y y = xw * Math.Cos(thz) - yw * Math.Sin(thz) x = xw * Math.Sin(thz) + yw * Math.Cos(thz) End Sub Public Sub pers() x = x * ed / (ed - od - z) y = (y * ed - eh * (od + z)) / (ed - od - z) End Sub Private Sub bl(ByVal s1, ByVal s2, ByVal s3) x = x * s1 y = y * s2 z = z * s3 End Sub Private Sub para(ByVal tx, ByVal ty, ByVal tz) x = x + tx y = y + ty z = z + tz End Sub Private Sub Button1x_Click_1(sender As Object, e As EventArgs) Handles Button1x.Click Form1.Show() Me.Hide() End Sub Private Sub Button2x_Click_1(sender As Object, e As EventArgs) Handles Button2x.Click End End Sub End Class