CLR: .Net / Mono / Boo / Otros CLR > VB .NET

[Código Fuente] Hacer lineas con el mouse y mover el dibujo con el mouse

(1/1)

sergiotarrillo:
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 ---Public Class Linea    'atributos de la clase   Private iniX As Integer   Private iniY As Integer   Private finX As Integer   Private finY As Integer    'lapiz del pincel   Private myPen As Pen      '------------------------       'aqui falta las declaraciones Property, en el zip esta todo     '---------------------     'constructor   Public Sub New(ByVal iX As Integer, ByVal iY As Integer, ByVal fX As Integer, ByVal fY As Integer)      iniX = iX      iniY = iY      finX = fX      finY = fY       'estableciendo el lapiz por defecto      myPen = New Pen(Color.Gold, 4)   End Sub    'ahora si metodos principales de la clase   Public Sub Move(ByVal str As String)      Select Case str         Case "U"   'mover arriba            iniY -= 2            finY -= 2         Case "D"   'mover abajo            iniY += 2            finY += 2         Case "R"   'mover derecha            iniX += 2            finX += 2         Case "L"   'mover izquierda            iniX -= 2            finX -= 2      End Select   End Sub End Class 
Clase DrawLine.vb


--- Código: vb.net ---   'mi objeto para dibujar   Private g As Graphics    Public Sub DrawMyLine()       'creando el objeto      g = PicFondo.CreateGraphics()       g.Clear(Color.White)      'ahora dibujando la lina      g.DrawLine(myLine.Pincel, myLine.pIniX, myLine.pIniY, myLine.pFinX, myLine.pFinY)   End Sub    Private Sub CmdDraw_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdDraw.Click      MsgBox("hacer un click en el Picture, mantenerlo presionado y mover el mouse")      dibujar = True        'creando el objeto  a usar      myLine = New Linea(0, 0, 0, 0)   End Sub    '----------------------------------------------   'Con los tres modos del mouse se dibuja la linea   Private Sub PicFondo_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PicFondo.MouseDown      If dibujar Then         If Not dibujando Then            myLine.pIniX = e.X            myLine.pIniY = e.Y            'ya se hizo el primer punto            dibujando = True         End If      End If   End Sub    Private Sub PicFondo_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PicFondo.MouseMove      If dibujando Then         myLine.pFinX = e.X         myLine.pFinY = e.Y         Me.DrawMyLine()      End If   End Sub    Private Sub PicFondo_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PicFondo.MouseUp      'se termino de dibujar la linea      dibujando = False       'ahora mover la linea      Me.Panel1.Visible = True   End Sub   '--------------------------------------------------    '----------------------------------------------   'ahora se lo va amover   Private Sub CmdMove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdMove.Click      'ya no crear otra linea      Me.dibujar = False      'CmdDraw.Enabled = False       'cambiar el ancho      Try         If (TxtAncho.Text <> "") Then            myLine.Ancho = Integer.Parse(TxtAncho.Text)         End If      Catch er As Exception         MsgBox("no ingreso un ancho correcto, se tomara el anterior")      End Try       'mandano un mensaje      MsgBox("mover la linea con el teclado")       'mover       Me.mover = True      'mandando el foco      Me.TxtKeyCode.Focus()   End Sub    Private Sub TxtKeyCode_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TxtKeyCode.KeyDown      'si se puede mover el objeto      If Me.mover Then         Select Case e.KeyCode            Case Keys.Up               myLine.Move("U")               Me.DrawMyLine()            Case Keys.Down               myLine.Move("D")               Me.DrawMyLine()            Case Keys.Left               myLine.Move("L")               Me.DrawMyLine()            Case Keys.Right               myLine.Move("R")               Me.DrawMyLine()         End Select      End If    End Sub   '------------------------------------------------------End Class 
Autor: sergio

garu:
http://usuarios.lycos.es/recursosperu/

SonicTecktonik:
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.

Navegación

[0] Índice de Mensajes

Ir a la versión completa