Foros del Web » Programación para mayores de 30 ;) » .NET »

DragOver en VB .net

Estas en el tema de DragOver en VB .net en el foro de .NET en Foros del Web. Hola a todos, solicito a alguien que pueda ayudarme a modificar el siguiente programa que acabo de realizar, apenas me estoy familiarizando con vb .net ...
  #1 (permalink)  
Antiguo 01/05/2007, 17:10
 
Fecha de Ingreso: abril-2007
Mensajes: 1
Antigüedad: 17 años
Puntos: 0
Sonrisa DragOver en VB .net

Hola a todos, solicito a alguien que pueda ayudarme a modificar el siguiente programa que acabo de realizar, apenas me estoy familiarizando con vb .net y me esta enloqueciendo el "DragOver", el programa inicia dando dos clics y se traza automáticamente una recta que une ambos puntos (los dos clics previos), estos "puntos" son dos picturebox con una imagen de un pequeño círculo, hasta aqui todo bien, de hecho al hacer clic en el botón "Inicializar", se borra todo y podemos repetir el trazo de la recta al dar dos clics de nuevo, repito hasta aqui todo bien, la bronca es cuando deseo "mover" ambos puntos (A y B), para lograr que la recta asuma otra posición, lo que programe aparentemente lo hace, sin embargo al tratar de mover ambos puntos las nuevas posiciones de ambos puntos no son las que corresponden al dragover que he efectuado, el código es:

Option Explicit On
Imports System.Drawing
Imports System.Drawing.Drawing2D

Public Class Form1
Dim miLapicero As New Pen(Color.Maroon, 2) 'de grosor 2
Dim k As Integer
Dim matriz(2, 2) As Integer
Dim m_MouseIsDown As Boolean

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
k = 1
Me.AllowDrop = True
Me.puntoA.AllowDrop = True
Me.puntoB.AllowDrop = True
End Sub

Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
If k = 1 Then
matriz(1, 1) = e.X
matriz(1, 2) = e.Y
puntoA.Visible = True
puntoA.Left = e.X - 5
puntoA.Top = e.Y - 5
k = k + 1
Else
If k = 2 Then
matriz(2, 1) = e.X
matriz(2, 2) = e.Y
puntoB.Visible = True
puntoB.Left = e.X - 5
puntoB.Top = e.Y - 5
' dibuja una línea con este Pen miLapicero
traza_recta()
k = k + 1
End If
End If
End Sub

Private Sub traza_recta()
Me.CreateGraphics.DrawLine(miLapicero, New Point(matriz(1, 1), matriz(1, 2)), New Point(matriz(2, 1), matriz(2, 2)))
End Sub

Private Sub puntoA_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles puntoA.DragEnter
If e.Data.GetDataPresent(DataFormats.Bitmap) Then
e.Effect = DragDropEffects.Move
Else
e.Effect = DragDropEffects.None
End If
End Sub

Private Sub puntoA_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles puntoA.DragOver
e.Effect = DragDropEffects.Move
puntoA.Left = e.X - 5
puntoA.Top = e.Y - 5
matriz(1, 1) = e.X
matriz(1, 2) = e.Y
traza_recta()
End Sub

Private Sub puntoA_GiveFeedback(ByVal sender As Object, ByVal e As System.Windows.Forms.GiveFeedbackEventArgs) Handles puntoA.GiveFeedback
traza_recta()
End Sub

Private Sub puntoB_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles puntoB.DragEnter
If e.Data.GetDataPresent(DataFormats.Bitmap) Then
e.Effect = DragDropEffects.Move
Else
e.Effect = DragDropEffects.None
End If
End Sub
Private Sub puntoB_GiveFeedback(ByVal sender As Object, ByVal e As System.Windows.Forms.GiveFeedbackEventArgs) Handles puntoB.GiveFeedback
traza_recta()
End Sub
Private Sub puntoA_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles puntoA.MouseDown
m_MouseIsDown = True
End Sub

Private Sub puntoB_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles puntoB.DragOver
e.Effect = DragDropEffects.Move
puntoB.Left = e.X - 5
puntoB.Top = e.Y - 5
matriz(2, 1) = e.X
matriz(2, 2) = e.Y
traza_recta()
End Sub

Private Sub puntoB_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles puntoB.MouseDown
m_MouseIsDown = True
End Sub

Private Sub puntoA_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles puntoA.MouseMove
If m_MouseIsDown Then
puntoA.DoDragDrop(puntoA.Image, DragDropEffects.Move)
End If
m_MouseIsDown = False
End Sub

Private Sub puntoB_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles puntoB.MouseMove
If m_MouseIsDown Then
puntoB.DoDragDrop(puntoB.Image, DragDropEffects.Move)
End If
m_MouseIsDown = False
End Sub

Private Sub inicializa_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles inicializa.Click
k = 1
Me.Refresh()
puntoA.Visible = False
puntoB.Visible = False
End Sub
End Class

De manera anticipada, doy las gracias por la atención dada, si te interesa este programa pero en vb6, hazmelo saber, como comentario adicional, con este programa estoy intentando involucrarme con la geometria dinámica, hasta pronto, mi correo es [email protected].

Saludos Prof. Montiel

Última edición por profMontiel; 09/05/2007 a las 06:24
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 13:20.