Dibujar con el Mouse en Visual Basic.Net

Publicado: septiembre 1, 2007 en Desarrollo, Graficos Visual Basic.Net, Programación, Visual Basic.Net, Visual Studio 2005

Mientras tengo un pequeño descanso voy a escribir este articulo que un amigo me pregunto como podia dibujar figuras con el mouse en visual basic.net, asi que aqui les dejo este codigo con el cual pueden dibujar rectangulos con el mouse y de ahi pueden hacer muchas cosas mas.

‘Creamos nuestro rectangulo
Dim SelectRect As Rectangle = New Rectangle()
‘Nuestros puntos que nos ayudaran para el dibujo del rectangulo
Dim ps As Point = New Point()
Dim pe As Point = New Point()

Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
‘Obtenemos las cordenadas del puntero del mouse

SelectRect.Width = 0
SelectRect.Height = 0
SelectRect.X = e.X
SelectRect.Y = e.Y

ps.X = e.X
ps.Y = e.Y
pe = ps
End Sub

Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
‘Si se activa el Boton izquierdo del mouse
If (e.Button = Windows.Forms.MouseButtons.Left) Then

‘Dibujamos el rectangulo

ControlPaint.DrawReversibleFrame(Me.RectangleToScreen(SelectRect), Color.Black, FrameStyle.Dashed)

SelectRect.Width = e.X – SelectRect.X
SelectRect.Height = e.Y – SelectRect.Y

ControlPaint.DrawReversibleFrame(Me.RectangleToScreen(SelectRect), Color.Black, FrameStyle.Dashed)

End If

End Sub

Private Sub Form1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp

Dim g As Graphics = Me.CreateGraphics()
Dim p As Pen = New Pen(Color.Blue, 2)

ControlPaint.DrawReversibleFrame(Me.RectangleToScreen(SelectRect), Color.Black, FrameStyle.Dashed)

g.DrawRectangle(p, SelectRect)
g.Dispose()
End Sub

Bueno espero que les sirva esta pequeño codigo.
Saludos!!

comentarios
  1. Oswaldo Vélez. dice:

    Hola, muchas gracias por el codigo, es algo que estoy necesitando, lo copié y lo puse a correr y funciono en menos de un segundo!!! gracias.

  2. saavedranet dice:

    Bueno gracias por visitar mi Blog, bueno la idea de todos los articulos que hay en este blog es para de alguna manera ayudar a todos los que lo visiten.
    En estos dias no he podido escribir ningun articulo,pero en estos proximos dias pienso seguir escribiendo articulos tecnicos, postenado algunos ejemplitos en visual basic.net y C#.net

    Saludos!!

  3. isa dice:

    Hola!!
    Me gustaría saber que es lo que hay que importar porque me da algunos errores y creo que es porque hay que hacer importaciones.
    Muchas gracias!! Saludos.

  4. saavedranet dice:

    Hola isa!!

    No tienes que importar nada para que ese ejemplo funcione, talvez si me dices que errores te salen, asi te puedo ayudar.

    Saludos!!

  5. isa dice:

    Hola!!
    Uso Visual Studio .NET 2003 y me da errores en el controlpaint, RectangleToScreen, FrameStyle. Si sabes cual es el problema te agradecería que me echaras un cable. De todas maneras no se si esto me puede ayudar para lo que yo quiero, supongo que algo si. Necesito hacer una firma digital.
    Muchas gracias por todo. Saludos!!!!

  6. saavedranet dice:

    Hola isa

    Bueno ese ejemplo lo hice en Visual Studio.Net 2005 y talvez es por eso que te dan esos errores.
    Aqui te paso un link del cual puedes descargarte un ejemplo con el que dibujas con el mouse, espero que te sirva.
    http://www.codeproject.com/csharp/DrawWithMouse/Draw_with_Mouse_src.zip

    Saludos!!

  7. Javi dice:

    Y como podría hacer para refrescar el formulario al pasar un ventana por encima de dicho formulario y que el rectágulo dibujado siguiera ahí???

  8. Jeimmy dice:

    quisiro aprender a utilizar visual basic.net y me gustaria que me dijeran donde puedo conseguir un buen tutorial donde se me detalle pasoa paso como utilizarlo.

  9. Antonio dice:

    hola mi saludo ante todo ,bueno mi pregunta e sla siguiente:
    como se puede agregar una animacion de flash a visual stidio.net
    en formulario window , en lo ke es en ASP si lo se
    solo ese mi duda ok
    muchas gracias por la respuesta
    bye
    Antonio

  10. saavedranet dice:

    Hola Antonio

    Bueno para poner animaciones flash en VS.net solo tienes que trabajar con este componente shockwave flash object.
    Para agregar ese componente solo tienes que ir a cuadro de herramientas -> click derecho elegir elementos -> luege te vas a las pestaña de componentes COM y buscas el componente shockwave flash object y luego le das agregar.
    Espero que te sirva de algo mi ayuda.

    Saludos!!

  11. Pepe dice:

    Como le podria hacer para poder cambiar el color de manera dinamica, en la sentencia Dim p As Pen = New Pen(Color.Blue, 2), es decir, «color.blue» pueda ser sustituido por una variable numerica, digamos si el valor de la variable es 1 equival a negro, 2 equivale a blanco, etc

  12. saavedranet dice:

    Hola Pepe

    Bueno para cambiar el color dinamicamente puedes trabajar de varias formas, aqui te dejo algunas utilizando Color.FromArgb().

    Dim p As Pen = New Pen(Drawing.Color.FromArgb(&H78FF00FF), 2)
    Utlizamos colores hexadecimales
    Dim p As Pen = New Pen(Color.FromArgb(255, 0, 0), 2)
    Aqui trabajamos con las conbinaciones del rojo,verde y azul

    El metodo Color.FromArgb() tiene 4 opciones para elegir el color que deseamos utilizar.

    Espero que te sirva de algo mi ayuda.

    Saludos!!

  13. sergio dice:

    hola, me parece interesante lo que pusistre, oye tengo una duda, como puedo integrar los mapas de google en visual basic .net 2003 lo he intentado y nada a ver si sabes algo, te dejo mi mail
    mil gracias

  14. Julio dice:

    Hola pepe el ejemplo de dibujar figuras con el mouse se puede crear en web.
    Si lo tienes lo puedes publicar

    Gracias

  15. Daniel dice:

    HOla: muy interesante y excelente,
    me agradaría saber com hacerle para que lo que dibuje con el mouse persista en un picture box?

    Gracais.

  16. yulia dice:

    como se dibuja una figura en un un formulario

  17. yulia dice:

    lo que quiero es que me diga como se dibuja en bisual vasic por ejemplo con el mause hago una figura geometrica y el programa la identifique y me diga su nombre y si la dibujo mal me de obsiones de lo que quiero dibujar porfa estare agradecirda

  18. ed dice:

    para dibujar en visual basic primero aprende «octografia» jajaja

  19. Rodrigo dice:

    Te agradezco hayas publicado este articulo, está muy bueno y práctico me fue de mucha utilidad.

    Gracias!!

  20. ce dice:

    Una vez dibujada la imagen, como hago para borrarla?

  21. antu corel traipe dice:

    esta maso la pag paro van a mejorar losss quierooooooooooooooooooooooooo besosssssssss

  22. Fernando dice:

    Hola muy buena tu pagina

    Quisiera saber como hacer para dibujar una linea entre dos puntos con el mouse

    te agradeceria mucho tu ayuda

  23. CamiloNet dice:

    Hola mira lo que pasa es que corro tu ejemplo pero el mouse empieza demasiado lejos del punto que selecciono quisiera saber que es lo que pasa y como puedo corregir ese error

  24. alex_damiel dice:

    Hola jorge ojaña me puedas ayudar kiero una aplicacion con poligonos osea le doy un click crea un punto le doy otro click y me crea una linea desde el primer click hasta el segundo asi hasta que forme una figura cerrada seria bueno si me pudieras ayudar gracias … Alex

  25. Nyta dice:

    hola sabes nesecesito hacer algo con esquemas y base de datos, el ejemplo que pusiste solo sirve para graficar no? Bueno mi pregunta es que si puedo manejar este tipo de graficos con base de datos????? porfa responde

  26. Andrés dice:

    hola, tu guía me sirvio mucho, me marco un error, y lo pude corregir, pero ahora como le puedo hacer, para guardar los rectangulos que se dibujan?

  27. Jose dice:

    Buenas, una anotación:

    al probar el código he podido comprobar como no se dibujan los rectángulos cuando las dimensiones son negativas.

    He probado añadiendo el siguiente código antes de dibujarlos, por si te sirve:

    If SelectRect.Width < 0 Then
    SelectRect.X = SelectRect.X + SelectRect.Width
    SelectRect.Width = -SelectRect.Width
    End If

    If SelectRect.Height < 0 Then
    SelectRect.Y = SelectRect.Y + SelectRect.Height
    SelectRect.Height = -SelectRect.Height
    End If

  28. raul dice:

    hola que tal, me gustaría saber como puedo dibujar una linea que me conecte varios puntos sobre el lienzo. Estoy utilizando «mousedown» para dibujar los puntos. Quiero saber como conectar esos puntos con una linea. Gracias

  29. MAMISHO dice:

    Gracias mijin. esta magnifico el codigo.

  30. juan dice:

    hola oye como puedo dibujar circulos,pentagonos,curvas,etc… y q se vean mientras se dibujan, al igual q el ejemplo de arriba

  31. sir16 dice:

    hola una question, como puedo pasar el dibujo del picturebox i guardarlo a una base de datos

  32. gordo dice:

    ¿Cuales son las instrucciones para poder dibujar figuras geométricas en el momento de la depuración y que de la figura dibujada se saque el área de sus medidas?(visual basic 2008)

Deja un comentario