Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Urgenteee por favor¡¡¡

Estas en el tema de Urgenteee por favor¡¡¡ en el foro de Visual Basic clásico en Foros del Web. hola a todos!! soy nueva aqui y no se mucho de programación con VisualBasic,necesito que me ayudeis en un problemilla por favor. necesito explicar estos ...
  #1 (permalink)  
Antiguo 27/11/2010, 15:12
 
Fecha de Ingreso: noviembre-2010
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 0
Urgenteee por favor¡¡¡

hola a todos!! soy nueva aqui y no se mucho de programación con VisualBasic,necesito que me ayudeis en un problemilla por favor.
necesito explicar estos pasos,y para que se hacen.

Dim listaPuntos As New ArrayList


Private Sub Panel1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PanelDibujo.MouseDown
Dim punto As New Point
punto.X = e.X
punto.Y = e.Y

listaPuntos.Add(punto)
PanelDibujo.Refresh()
End Sub

Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PanelDibujo.Paint
Pintar(e.Graphics)
End Sub

Private Sub Pintar(ByVal graphics As Graphics)

For i As Integer = 0 To listaPuntos.Count - 2 Step 1
graphics.DrawLine(Pens.Blue, listaPuntos.Item(i), listaPuntos.Item(i + 1))
Next

End Sub


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
borrar()
End Sub
  #2 (permalink)  
Antiguo 28/11/2010, 03:47
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Urgenteee por favor¡¡¡

Cuando pinchas sobre el Panel1 se van memorizando las coordenadas en ListaPuntos() y se van dibujando líneas de un punto a otro en el picture PanelDibujo.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #3 (permalink)  
Antiguo 28/11/2010, 05:03
 
Fecha de Ingreso: noviembre-2010
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Urgenteee por favor¡¡¡

gracias!!!

algun comentario más?? cualquier idea me ayuda
  #4 (permalink)  
Antiguo 28/11/2010, 05:24
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Urgenteee por favor¡¡¡

No estoy muy puesto en vb net, pero creo que mas o menos hace esto:

Private Sub Panel1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PanelDibujo.MouseDown

' creamos variable Punto de tipo coordenada
Dim punto As New Point

' la cargamos con las coordenadas donde hemos pinchado
punto.X = e.X
punto.Y = e.Y

' y la guardamos en una matriz
listaPuntos.Add(punto)

' No tengo muy claro como va esto. Imagino que esto hace que se ejecute el evento paint y se dibujen las lineas.
PanelDibujo.Refresh()

End Sub

Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PanelDibujo.Paint

' ejecutamos la sub "pintar" dándole como parámetro el grafico donde debe pintar
Pintar(e.Graphics)

End Sub

Private Sub Pintar(ByVal graphics As Graphics)

' creamos un bucle que irá pintando líneas desde cada punto al siguiente en todas las coordenadas memorizadas.
For i As Integer = 0 To listaPuntos.Count - 2 Step 1
graphics.DrawLine(Pens.Blue, listaPuntos.Item(i), listaPuntos.Item(i + 1))
Next

End Sub

Y la sub borrar borrará el grafico donde estamos pintando.

El fallo que veo es que cada vez que marcas un nuevo punto se repintan todas las líneas anteriores, no solo la última. Será porque se borran solas al hacer refresh? no estoy muy seguro.
En otro caso bastaría con recordar donde se había pinchado la ultima vez y en el evento mouse_click directamente pintar la línea y memorizar las nuevas coordenadas para el proximo click.

Tambien hay que tener en cuenta que la primera vez que pinches, al llegar al bucle for next sólo hay un elemento en la matriz, de modo que el
For i As Integer = 0 To listaPuntos.Count - 2 Step 1
se convierte en:
for i = 0 to -1 step 1
lo cual quizá pueda generar un error.

Mejor así?

Saludos
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #5 (permalink)  
Antiguo 28/11/2010, 09:11
 
Fecha de Ingreso: noviembre-2010
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Urgenteee por favor¡¡¡

es que al final pone:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
borrar()
End Sub

no sé si se deberá a ese fallo que dices..

gracias! :)
  #6 (permalink)  
Antiguo 28/11/2010, 11:36
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Urgenteee por favor¡¡¡

No tiene nada que ver. Ese botón llama a una sub "Borrar" que no existe o que no has incluido en el código mostrado. Si no existe, al pinchar ese botón aparecerá un mensaje de error, pero que no tiene nada que ver con todo lo demás.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Etiquetas: favor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:14.