• Viernes 8 de Noviembre de 2024, 01:45

Autor Tema: [Código Fuente] Hacer lineas con el mouse y mover el dibujo con el mouse  (Leído 13048 veces)

sergiotarrillo

  • Moderador
  • ******
  • Mensajes: 1059
    • Ver Perfil
    • http://sergiot2.com/blog
[Código Fuente] Hacer lineas con el mouse y mover el dibujo con el mouse
« en: Lunes 9 de Agosto de 2004, 06:40 »
0
Visual Basic .Net: Hacer una linea con el mouse, y moverla como un objeto con el teclado.


--------------------------------------------------------------------------------

Autor: supersergioman@hotmail.com
Universidad Nacional de Trujillo --- Peru

Puede parecer facil el titulo propuesto, pero podemos aprender muchos temas con este reto. A ver piensen un poco cual seria como seria el programa, aver..........., facil, capturo los click del mouse, claro serian dos, uno para el punto inicial y otro para el punto final, listo ahora lo dibujo. Pero como puedo mover esa linea a donde yo quiera?, dibujo una nueva linea, puede ser, muevo el fondo, puede ser, etc. Si quiero mover a la linea creada tengo que tratarla como un objeto, es decir hacer uso de P.O.O. (programacion orientada a objetos).

Auque paresca muy tedioso hacer clases, -si lo puedo hacer en el windows.form, si puede hacer pero la P.O.O, le da muchas caracteristicas a tu programa, cuando mas cresca tu programa no se te hara tan díficil si usaste P.O.O. Yo para este programa solo voy a usar dos clases: DrawLine.vb (formulario windows), y Linea.vb.

 

Clase Linea.vb


Código: vb.net
  1. Public Class Linea
  2.  
  3.    'atributos de la clase
  4.    Private iniX As Integer
  5.    Private iniY As Integer
  6.    Private finX As Integer
  7.    Private finY As Integer
  8.  
  9.    'lapiz del pincel
  10.    Private myPen As Pen
  11.  
  12.  
  13.  
  14.    '------------------------
  15.  
  16.       'aqui falta las declaraciones Property, en el zip esta todo  
  17.    '---------------------
  18.  
  19.  
  20.    'constructor
  21.    Public Sub New(ByVal iX As Integer, ByVal iY As Integer, ByVal fX As Integer, ByVal fY As Integer)
  22.       iniX = iX
  23.       iniY = iY
  24.       finX = fX
  25.       finY = fY
  26.  
  27.       'estableciendo el lapiz por defecto
  28.       myPen = New Pen(Color.Gold, 4)
  29.    End Sub
  30.  
  31.    'ahora si metodos principales de la clase
  32.    Public Sub Move(ByVal str As String)
  33.       Select Case str
  34.          Case "U"   'mover arriba
  35.             iniY -= 2
  36.             finY -= 2
  37.          Case "D"   'mover abajo
  38.             iniY += 2
  39.             finY += 2
  40.          Case "R"   'mover derecha
  41.             iniX += 2
  42.             finX += 2
  43.          Case "L"   'mover izquierda
  44.             iniX -= 2
  45.             finX -= 2
  46.       End Select
  47.    End Sub
  48.  
  49. End Class
  50.  

Clase DrawLine.vb

Código: vb.net
  1.    'mi objeto para dibujar
  2.    Private g As Graphics
  3.  
  4.    Public Sub DrawMyLine()
  5.  
  6.       'creando el objeto
  7.       g = PicFondo.CreateGraphics()
  8.  
  9.       g.Clear(Color.White)
  10.       'ahora dibujando la lina
  11.       g.DrawLine(myLine.Pincel, myLine.pIniX, myLine.pIniY, myLine.pFinX, myLine.pFinY)
  12.    End Sub
  13.  
  14.    Private Sub CmdDraw_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdDraw.Click
  15.       MsgBox("hacer un click en el Picture, mantenerlo presionado y mover el mouse")
  16.       dibujar = True
  17.  
  18.  
  19.       'creando el objeto  a usar
  20.       myLine = New Linea(0, 0, 0, 0)
  21.    End Sub
  22.  
  23.    '----------------------------------------------
  24.    'Con los tres modos del mouse se dibuja la linea
  25.    Private Sub PicFondo_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PicFondo.MouseDown
  26.       If dibujar Then
  27.          If Not dibujando Then
  28.             myLine.pIniX = e.X
  29.             myLine.pIniY = e.Y
  30.             'ya se hizo el primer punto
  31.             dibujando = True
  32.          End If
  33.       End If
  34.    End Sub
  35.  
  36.    Private Sub PicFondo_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PicFondo.MouseMove
  37.       If dibujando Then
  38.          myLine.pFinX = e.X
  39.          myLine.pFinY = e.Y
  40.          Me.DrawMyLine()
  41.       End If
  42.    End Sub
  43.  
  44.    Private Sub PicFondo_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PicFondo.MouseUp
  45.       'se termino de dibujar la linea
  46.       dibujando = False
  47.  
  48.       'ahora mover la linea
  49.       Me.Panel1.Visible = True
  50.    End Sub
  51.    '--------------------------------------------------
  52.  
  53.    '----------------------------------------------
  54.    'ahora se lo va amover
  55.    Private Sub CmdMove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdMove.Click
  56.       'ya no crear otra linea
  57.       Me.dibujar = False
  58.       'CmdDraw.Enabled = False
  59.  
  60.       'cambiar el ancho
  61.       Try
  62.          If (TxtAncho.Text <> "") Then
  63.             myLine.Ancho = Integer.Parse(TxtAncho.Text)
  64.          End If
  65.       Catch er As Exception
  66.          MsgBox("no ingreso un ancho correcto, se tomara el anterior")
  67.       End Try
  68.  
  69.       'mandano un mensaje
  70.       MsgBox("mover la linea con el teclado")
  71.  
  72.       'mover
  73.       Me.mover = True
  74.       'mandando el foco
  75.       Me.TxtKeyCode.Focus()
  76.    End Sub
  77.  
  78.    Private Sub TxtKeyCode_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TxtKeyCode.KeyDown
  79.       'si se puede mover el objeto
  80.       If Me.mover Then
  81.          Select Case e.KeyCode
  82.             Case Keys.Up
  83.                myLine.Move("U")
  84.                Me.DrawMyLine()
  85.             Case Keys.Down
  86.                myLine.Move("D")
  87.                Me.DrawMyLine()
  88.             Case Keys.Left
  89.                myLine.Move("L")
  90.                Me.DrawMyLine()
  91.             Case Keys.Right
  92.                myLine.Move("R")
  93.                Me.DrawMyLine()
  94.          End Select
  95.       End If
  96.  
  97.    End Sub
  98.    '------------------------------------------------------
  99. End Class
  100.  

Autor: sergio
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.


Sergio Tarrillo
Blog]miBlog[/url]

No me visiten!

garu

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Les invito a ingresar a esta web trujillana con foros de visual net
« Respuesta #1 en: Miércoles 27 de Septiembre de 2006, 03:36 »
0

SonicTecktonik

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
consulta
« Respuesta #2 en: Jueves 24 de Febrero de 2011, 17:58 »
0
Hola amigo revise tu codigo pero no lo entiendo talves tienes el codigo o uno similar en c#.???...la verdad no tengo idea como hacer el grafico con el mouse en c#. De antemano gracias por la ayuda que me puedas ofrecer.