elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Mover una imagen de un picturebox a otro con DragDrop
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Mover una imagen de un picturebox a otro con DragDrop  (Leído 6,388 veces)
$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Mover una imagen de un picturebox a otro con DragDrop
« en: 9 Enero 2014, 15:40 pm »

Estoy haciendo un juego de mesa, donde las fichas son picturebox, pero necesito moverlas y he usado DragDrop para poder mover la imagen del picturebox a otro. Pero luego necesito borrar la imagen del original y en un caso hacer invisible el picturebox una vez usada la imagen.

No puedo hacer eso, porque solo se copia la imagen y no se mueve, y cuando se completa el evento la unica informacion que llega es la de la imagen por argumento pero no la del picturebox de donde se sacó entonces no puedo saber de que picturebox saqué la imagen.

Uso esto:

Código
  1. private void picA1_MouseDown(object sender, MouseEventArgs e)
  2.        {
  3.            picA1.DoDragDrop(picA1.Image, DragDropEffects.Move);
  4.        }
  5.  
  6.  
  7.  private void pic1_DragEnter(object sender, DragEventArgs e)
  8.        {
  9.            e.Effect = DragDropEffects.Move;
  10.  
  11.        }
  12.  
  13. private void pic1_DragDrop(object sender, DragEventArgs e)
  14.        {
  15.            pic1.Image = (Image)e.Data.GetData(DataFormats.Bitmap);
  16.  
  17.  
  18.        }
  19.  

El codigo funciona, pic1 queda con la imagen de picA1, pero lo que quiero ahora es poder manejar a picA1 para poder usar picA1.image = null; pero sin saber que es picA1 ya que puede llegar el Drop de cualquier otro picturebox.

Intente de todo en el ultimo evento, donde se produce el cambio, usando el argumento "e", pero solo es de lectura y no hace referencia al control.

Mi idea seria que en este ultimo evento se pudiera hacer por ejemplo: e.image = null; para poder borrarla.

Pero tal vez tengo que usar un evento de picA1, pero es que tiene que eliminarse la imagen cuando se hizo el drag ya entonces tiene que ser en este ultimo evento siempre.

Espero que se haya entendido y me puedan dar una mano, saludos!


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Mover una imagen de un picturebox a otro con DragDrop
« Respuesta #1 en: 9 Enero 2014, 16:17 pm »

Buenas!

Una solución es establecer una variable para rastrear el picturebox que está realizando el DragDrop en cada momento, esto te permitiria tener un control más directo con el SourceControl.

Código
  1. Public Class Form1
  2.  
  3.    Friend CurrentDraggingControl As PictureBox = Nothing
  4.  
  5.    Private Sub Form1_Load() Handles MyBase.Load
  6.        Pic1.AllowDrop = True
  7.        pica1.AllowDrop = True
  8.    End Sub
  9.  
  10.    Private Sub picA1_MouseDown(sender As Object, e As MouseEventArgs) Handles pica1.MouseDown
  11.        CurrentDraggingControl = sender
  12.        sender.DoDragDrop(sender.Image, DragDropEffects.Move)
  13.    End Sub
  14.  
  15.    Private Sub pic1_DragEnter(sender As Object, e As DragEventArgs) Handles Pic1.DragEnter
  16.        e.Effect = DragDropEffects.Move
  17.    End Sub
  18.  
  19.    Private Sub pic1_DragDrop(sender As Object, e As DragEventArgs) Handles Pic1.DragDrop
  20.        sender.Image = DirectCast(e.Data.GetData(DataFormats.Bitmap), Image)
  21.        CurrentDraggingControl.Image = Nothing
  22.    End Sub
  23.  
  24. End Class


Otra sería especificar una condición donde si el DragDrop se cumple positívamente entonces llamar a "X" método (para no repetir código con los demás pictureboxes que tengas) y así hacer lo que queramos con el sourcecontrol:

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Form1_Load() Handles MyBase.Load
  4.        Pic1.AllowDrop = True
  5.        pica1.AllowDrop = True
  6.    End Sub
  7.  
  8.    Private Sub picA1_MouseDown(sender As Object, e As MouseEventArgs) Handles pica1.MouseDown
  9.        If sender.DoDragDrop(sender.Image, DragDropEffects.Move) = DragDropEffects.Move Then
  10.            AfterDragDrop(sender)
  11.        End If
  12.    End Sub
  13.  
  14.    Private Sub pic1_DragEnter(sender As Object, e As DragEventArgs) Handles Pic1.DragEnter
  15.        e.Effect = DragDropEffects.Move
  16.    End Sub
  17.  
  18.    Private Sub pic1_DragDrop(sender As Object, e As DragEventArgs) Handles Pic1.DragDrop
  19.        sender.Image = DirectCast(e.Data.GetData(DataFormats.Bitmap), Image)
  20.    End Sub
  21.  
  22.    Private Sub AfterDragDrop(ByVal PCB As PictureBox)
  23.        PCB.Image = Nothing
  24.    End Sub
  25.  
  26. End Class


Saludos!


« Última modificación: 9 Enero 2014, 16:42 pm por Eleкtro » En línea



$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: Mover una imagen de un picturebox a otro con DragDrop
« Respuesta #2 en: 9 Enero 2014, 16:53 pm »

Gracias elektro! funciona!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
cambio de imagen en un picturebox
Programación Visual Basic
Hackel 1 1,978 Último mensaje 1 Julio 2006, 18:26 pm
por <--v1c1ous-->
Efecto DragDrop y uso (Tema modificado: dragdrop)
.NET (C#, VB.NET, ASP)
Zeroql 3 3,078 Último mensaje 8 Junio 2010, 22:31 pm
por Zeroql
PictureBox VB.NET [Tranparencia Imagen]
.NET (C#, VB.NET, ASP)
MicroHack 2 15,985 Último mensaje 25 Mayo 2011, 02:07 am
por sentinel13
Como mover un PictureBox ????
.NET (C#, VB.NET, ASP)
BlackDiamond 1 6,094 Último mensaje 28 Marzo 2011, 23:36 pm
por Edu
Mover mover la imagen de un JButton a otro JButton
Java
mystiic 0 2,364 Último mensaje 12 Mayo 2015, 21:26 pm
por mystiic
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines