Open Menu dzosoft
Close Menu dzosoft

   TODO SOBRE INFORMÁTICA Y TECNOLOGÍA


                             




A MALE SOLUTION TO PROSTATE PROBLEMS!

Publish perfectly-optimized content in 1-click



 
 
 

Forma 3D, curva 3D y bola 3D en VB .Net usando GDI+

 

La forma más básica de programación de gráficos en Visual Basic.Net utiliza una colección de clases conocida como GDI+.
GDI+ significa Graphics Device Interface Plus y el motivo del sufijo más es que antes de GDI+
había GDI, por lo que está ahí para mostrarse como una mejora con respecto a su predecesor.

Las clases GDI+ residen en el espacio de nombres System.Drawing y algunas clases son:
 - System.Drawing.Bitmap
 - System.Drawing.Graphics
 - System.Drawing.Icon
 - System.Drawing.Image
Una vez que tenga un lienzo para dibujar, necesita tener algún tipo de objeto para comenzar a dibujar; el
La clase System.Drawing.Graphics es la que se encarga de las operaciones de dibujo en
Visual Basic.Net. Hay tres métodos diferentes para usar la clase Graphics, un método accede
un objeto Graphics que ya existe, mientras que los otros dos métodos en realidad crean un objeto Graphics.
Para acceder a un objeto Graphics que ya existe, debe utilizar PaintEventArgs en un
el evento Paint del control. Este es el parámetro e en la declaración del evento:
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles MyBase.Paint
    Dim g As Graphics = e.Graphics
End Sub	

O obtenga el control PictureBox1 como el siguiente código:
  Dim g As System.Drawing.Graphics
  g = PictureBox1.CreateGraphics


Abra la comunidad de Microsoft Visual Studio 2019o con licencia y seleccione un Nuevo proyecto en el menú Archivo.
Seleccione Visual Basic, Aplicación de formulario de Windows, luego haga clic en Aceptar, inserte el primer formulario Form1,
desde la barra de herramientas inserte tres botones Button1, Button2 y Button3
agregue otro control PictureBox1 para el dibujo

En este proyecto necesitas declarar las siguientes variables
    Dim g As System.Drawing.Graphics 
    Dim pen1 As New System.Drawing.Pen(Color.Blue, 0.5) ' the pen with a specific color 
    Const PI = 3.14159 
    Dim flag, col, r, h, hl, n, n1 As Short
    Dim x, y, z, cx, cy, cz, thx, thy, thz As Single
    Dim point1, point2, point3, point4, point5 As System.Drawing.Point


Haga doble clic en el Button1 y agregue el siguiente código
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Dim th As Single Static ax(9), ay(9), az(9) Static bx(9), by(9), bz(9) h = 160 : thy = 0.2 col = 0 : n1 = 1 r = 100 n = 8 thx = 0.2 PictureBox1.Refresh() ax(0) = h : ay(0) = h : az(0) = h n1 = 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 dzorotationX() : Call dzorotationX() bx(n1) = x : by(n1) = y : bz(n1) = z n1 = n1 + 1 Next th For n1 = 1 To n x = ax(n1) : y = ay(n1) Call dzodrawline() x = ax(n1 + 1) : y = ay(n1 + 1) Call dzodrawline() x = bx(n1 + 1) : y = by(n1 + 1) Call dzodrawline() x = bx(n1) : y = by(n1) Call dzodrawline() Next n1 End Sub

And here is the result after execution

 
Forma 3D, curva 3D y bola 3D en VB .Net usando GDI+
 

Haga doble clic en el Button2 y agregue el siguiente código
 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        PictureBox1.Refresh()
        g = PictureBox1.CreateGraphics
        Dim x, y, s, cx, cy, zz, xx, yy As Single
        Dim h, a, b, sx, sx1, sx2, sy, sy1, sy2 As Integer
        Dim x1, x2, y1, y2, xw, yw As Integer
        s = pi / 16
        x1 = -3
        x2 = 3
        xw = x2 - x1
        y1 = -9 : y2 = 9 : yw = y2 - y1
        sx1 = 140 : sx2 = 600
        sy1 = 360 : sy2 = 100
        cx = (sx2 - sx1) / xw
        cy = (sy1 - sy2) / yw
        h = 170 : a = 6 : b = 6
        For y = y1 + 6 To y2 - 6 Step 1 / cy
            For x = x1 To x2 Step 1 / cx * 2
                zz = h * Math.Exp(-x * x / a * a - y * y / b * b)
                xx = x * cx + sx1 + 160
                yy = sy1 - y * cy
                sx = Int(xx + y * cy * Math.Cos(s))
                sy = yy - zz
                sy = sy - 100
                If x = -3 Then
                    point1.X = sx - 60 : point1.Y = sy - 20
                Else : point2.X = sx - 60 : point2.Y = sy - 20
                    g.DrawLine(pen1, point1, point2)
                    point1 = point2
                End If
            Next x
        Next y
    End Sub


Y aquí está el resultado después de la ejecución.
 
Forma 3D, curva 3D y bola 3D en VB .Net usando GDI+
 

Double click on the Button3 and add the following code
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        PictureBox1.Refresh()
        g = PictureBox1.CreateGraphics
        Dim i, r As Integer
        Dim x, y, z, s, q, p, px, py As Single
        Dim mx(600), my(600) As Integer
        s = pi / 4
        r = 100
        i = 1
        q = -pi / 2 + 0.1
        For p = 0 To 2 * pi Step 0.2
            x = r * Math.Cos(q) * Math.Sin(p)
            y = r * Math.Sin(q)
            z = r * Math.Cos(q) * Math.Cos(p)
            px = x * 1.2
            py = y - z * Math.Sin(s)
            mx(i) = px + 200
            my(i) = 150 - py
            i = i + 1
        Next p
        point1.X = mx(1) : point1.Y = my(1)
        For q = -pi / 2 + 0.2 To pi / 2 Step 0.2
            i = 1
            For p = 0 To 2 * pi Step 0.2
                x = r * Math.Cos(q) * Math.Sin(p)
                y = r * Math.Sin(q)
                z = r * Math.Cos(q) * Math.Cos(p)
                px = x * 1.2
                py = y - z * Math.Sin(s)

point2.X = px + 200 : point2.Y = 150 - py g.DrawLine(pen1, point1, point2)
point1 = point2
point3.X = mx(i) : point3.Y = my(i) point4.X = px + 200 : point4.Y = 150 - py g.DrawLine(pen1, point3, point4) point3 = point4 mx(i) = px + 200 my(i) = 150 - py i = i + 1 Next p p = 0 x = r * Math.Cos(q) * Math.Sin(p) y = r * Math.Sin(q) z = r * Math.Cos(q) * Math.Cos(p) px = x * 1.2 py = y - z * Math.Sin(s)
point5.X = px + 200 : point5.Y = 150 - py g.DrawLine(pen1, point4, point5) point4 = point5 Next q End Sub

Y aquí está el resultado después de la ejecución.

 
Forma 3D, curva 3D y bola 3D en VB .Net usando GDI+
 

Finalmente tendrás el siguiente código dentro de nuestra clase Form1

Public Class Form1
    Dim g As System.Drawing.Graphics
    Dim pen1 As New System.Drawing.Pen(Color.Blue, 0.5)
    Const PI = 3.14159
    Dim flag, col, r, h, hl, n, n1 As Short
    Dim x, y, z, cx, cy, cz, thx, thy, thz As Single
    Dim point1, point2, point3, point4, point5 As System.Drawing.Point
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Dim th As Single Static ax(9), ay(9), az(9) Static bx(9), by(9), bz(9) h = 160 : thy = 0.2 col = 0 : n1 = 1 r = 100 n = 8 thx = 0.2 PictureBox1.Refresh() ax(0) = h : ay(0) = h : az(0) = h n1 = 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 dzorotationY() : Call dzorotationX() bx(n1) = x : by(n1) = y : bz(n1) = z n1 = n1 + 1 Next th For n1 = 1 To n x = ax(n1) : y = ay(n1) Call dzodrawline() x = ax(n1 + 1) : y = ay(n1 + 1) Call dzodrawline() x = bx(n1 + 1) : y = by(n1 + 1) Call dzodrawline() x = bx(n1) : y = by(n1) Call dzodrawline() Next n1 End Sub Public Sub dzodrawline() Dim gx, gy As Single gx = 250 + x gy = 180 + y If flag = 0 Then point1.X = gx : point1.Y = gy flag = 1 point2.X = gx : point2.Y = gy g = PictureBox1.CreateGraphics g.DrawLine(pen1, point1, point2) point1 = point2 End Sub Private Sub dzorotationX() 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
Private Sub dzorotationY() Dim zw, xw 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
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click PictureBox1.Refresh() g = PictureBox1.CreateGraphics Dim x, y, s, cx, cy, zz, xx, yy As Single Dim h, a, b, sx, sx1, sx2, sy, sy1, sy2 As Integer Dim x1, x2, y1, y2, xw, yw As Integer s = pi / 16 x1 = -3 x2 = 3 xw = x2 - x1 y1 = -9 : y2 = 9 : yw = y2 - y1 sx1 = 140 : sx2 = 600 sy1 = 360 : sy2 = 100 cx = (sx2 - sx1) / xw cy = (sy1 - sy2) / yw h = 170 : a = 6 : b = 6 For y = y1 + 6 To y2 - 6 Step 1 / cy For x = x1 To x2 Step 1 / cx * 2 zz = h * Math.Exp(-x * x / a * a - y * y / b * b) xx = x * cx + sx1 + 160 yy = sy1 - y * cy sx = Int(xx + y * cy * Math.Cos(s)) sy = yy - zz sy = sy - 100 If x = -3 Then point1.X = sx - 60 : point1.Y = sy - 20 Else : point2.X = sx - 60 : point2.Y = sy - 20 g.DrawLine(pen1, point1, point2) point1 = point2 End If Next x Next y End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click PictureBox1.Refresh() g = PictureBox1.CreateGraphics Dim i, r As Integer Dim x, y, z, s, q, p, px, py As Single Dim mx(600), my(600) As Integer s = pi / 4 r = 100 i = 1 q = -pi / 2 + 0.1 For p = 0 To 2 * pi Step 0.2 x = r * Math.Cos(q) * Math.Sin(p) y = r * Math.Sin(q) z = r * Math.Cos(q) * Math.Cos(p) px = x * 1.2 py = y - z * Math.Sin(s) mx(i) = px + 200 my(i) = 150 - py i = i + 1 Next p point1.X = mx(1) : point1.Y = my(1) For q = -pi / 2 + 0.2 To pi / 2 Step 0.2 i = 1 For p = 0 To 2 * pi Step 0.2 x = r * Math.Cos(q) * Math.Sin(p) y = r * Math.Sin(q) z = r * Math.Cos(q) * Math.Cos(p) px = x * 1.2 py = y - z * Math.Sin(s)
point2.X = px + 200 : point2.Y = 150 - py g.DrawLine(pen1, point1, point2)
point1 = point2
point3.X = mx(i) : point3.Y = my(i) point4.X = px + 200 : point4.Y = 150 - py g.DrawLine(pen1, point3, point4) point3 = point4 mx(i) = px + 200 my(i) = 150 - py i = i + 1 Next p p = 0 x = r * Math.Cos(q) * Math.Sin(p) y = r * Math.Sin(q) z = r * Math.Cos(q) * Math.Cos(p) px = x * 1.2 py = y - z * Math.Sin(s)
point5.X = px + 200 : point5.Y = 150 - py g.DrawLine(pen1, point4, point5) point4 = point5 Next q End Sub End Class


 

Conclusión

 
Espero que hayas aprendido a dibujar en Visual Basic.Net usando GDI+. Como puede ver, el dibujo es bastante
simple pero puede tener sus inconvenientes, como no utilizar las instrucciones de uso al declarar los diversos objetos.
puede descargar todo el proyecto desde aquí


También te puede interesar


Todo sobre informática y tecnología

Cómo crear la herramienta Paint en VB .Net

Usar VB .Net y Active Directory

Captura Webcam en VB.NET

Usando ChatGPT en VB .Net


Leave comment
          

Guardar apodo y correo electrónico en este navegador para la próxima vez.



Cargando...     

Hiding your face is not a solution!