Programación General > Visual Basic para principiantes
Primeriza en vb6 - Como dibujar un punto y una recta?
Noemii85:
Hola, soy primeriza en visual basic y me gustaría que me ayudarais un poco en esto. Tengo que hacer una práctica en la que crear un entorno y interactuar con él con elementos gráficos 2D haciendo translaciones, rotaciones, etc...
El problema esta en que no se ni como empezar, he estado mirando tutoriales y buscando ejemplos pero no he visto nada. Alguien me podría ayudar, busco ejemplos como dibujar un punto o una línea recta dando las coordenadas, o dibujando la directamente con el ratón.
Mersi por la ayuda ^_^
Noemii85:
He estado probando estos días y ya he conseguido lo que había pedido aunque nadie contestara :oops: xD, ahora quiero ponerme a mirar lo de las rotaciones y translaciones. Pero antes, quiero mirar de poner un eje de coordenadas en el PictureBox, sabeis que método tengo que utilizar y como, para hacer algo tan sencillo como esto? jeje
Saludos y gracias. :D
Nebire:
Bien, si ya sabes poner puntos y líneas (por ti solita/o) ya se te puede ayudar...
Para utilizar un sistema de cordenadas debes usar la propiedad scale
Por ejmplo:
--- Código: Visual Basic --- picture1.scale(-100,-100)-(200,200) Aquí le hemos dicho que el sistema de cordenadas tiene 200 unidades de ancho por 200 unidades de alto, y que las unidades van desde -100 en el eje de cordenadas x a: (-100 + 200), para el eje y le indicamos lo mismo que para el eje x.
Qué unidades son ?... las unidades son del sistema indicado en picture1.scalemode, por tanto si previo al código anterior le añades (delante o detrás de la línea indicada):
--- Código: Visual Basic --- picture1.scalemode = vbpixels ...ahora ya sabes que las unidades son en píxeles...
Ahora practica poniendo líneas y puntos...
quiero verte poner código y alguna imagen, en tu siguiente intervención (para ver como vas y prosperas) sólo entonces te ayudaré a realizar rotaciones y demás...
saludos y al tajo.
Noemii85:
Perdona por tardar tanto, pero he tenido mucho trabajo y apenas tengo tiempo. Quiero mirarme ahora de hacer la rotación, alguna idea?
Este es el codigo que tengo ahora mismo:
--- Citar ---
'Establim les opcions
Private Sub cmd_Dibuixar_Click(Index As Integer)
Select Case Index
Case 0: Opcio = "Recta"
Case 1: Opcio = "Rectangle"
Case 2: Opcio = "Cercle"
Case 3: Opcio = "Pintar"
End Select
End Sub
Private Sub Esborrar_Click()
' Li indiquem una ruta buida per aixi elimnar la imatge del picturebox
With Picture1
.Picture = LoadPicture("")
End With
End Sub
Private Sub Form_Load()
cmd_Dibuixar(0).Caption = " Recta "
cmd_Dibuixar(1).Caption = " Rectangle "
cmd_Dibuixar(2).Caption = " Cercle "
cmd_Dibuixar(3).Caption = " Pintar "
Picture1.DrawMode = vbInvert
Picture1.DrawWidth = 1
Picture1.BackColor = vbWhite
End Sub
Private Sub Picture1_MouseDown(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
'Guardem els valors de x e y en les variables
m_x1 = X
m_y1 = Y
m_x2 = X
m_y2 = Y
' Guardem el radi
Radi = m_x2 - m_x1
'Flag per que no s'executi sempre el MouseMove
Flag = True
' para pintar
Picture1.PSet (X, Y)
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
If Not Flag Then Exit Sub
Select Case Opcio
Case "Pintar"
Picture1.Line -(X, Y), RGB(Rnd * 255, Rnd * 255, Rnd * 255)
Case "Recta"
Picture1.Line (m_x1, m_y1)-(m_x2, m_y2)
Case "Rectangle"
Picture1.Line (m_x1, m_y1)-(m_x2, m_y2), , B
Case "Cercle"
Picture1.Circle (m_x1, m_y1), Radi
End Select
m_x2 = X
m_y2 = Y
Select Case Opcio
Case "Recta"
Picture1.Line (m_x1, m_y1)-(m_x2, m_y2)
Case "Rectangle"
Picture1.Line (m_x1, m_y1)-(m_x2, m_y2), , B
Case Else
If m_x2 >= m_x1 Then
Radi = m_x2 - m_x1
Else
Radi = m_x1 - m_x2
End If
End Select
If Opcio = "Cercle" Then Picture1.Circle (m_x1, m_y1), Radi
End Sub
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
Flag = False
End Sub
--- Fin de la cita ---
Mersi y sorry que algunas cosas estan en catalan jeje
PD: Por cierto, solita ^_^
Nebire:
Mañana te atiendo al tema que hoy se me ha hecho tarde... este mensaje es para que no pienses que lo dejo pasar...
Si te parece bien haremos una especie de motor 3d sencillo...
Navegación
[#] Página Siguiente
Ir a la versión completa