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
Ir a la versión completa