Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Arrastrar Y Mostrar Imagen [Solucionado]
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Arrastrar Y Mostrar Imagen [Solucionado] 
 
Bueno, pues he retocado el primer mensaje.

Después solucionar el problema de la forma de cargar o asignar una imagen al tipo picture parece que ya funciona.

En esta parte de aquí del código:

...
 If anombre[0] = "file:" Then anombre.Remove(0) 'Eliminamos la palabra file:    
....
 


Lo que me devuelve el explorador de archivos es una cadena que contiene caracteres iguales que un enlace web. Mejor dicho una URI.
Para eliminar los elementos del array que no son necesario primero elimino la palabra file.
He abreviado un poco.

Código final:

' gambas class file

Public Sub PictureBox1_Drop()  
  
  Dim anombre As String[]
  Dim ruta As String  
  Dim palabra As String
  Dim pimagen As Picture
    
  ruta = Drag.Paste("text/uri-list")
  anombre = Split(ruta, "/", "\r\n", True)
  ruta = ""
  
  If anombre[0] = "file:" Then anombre.Remove(0) 'Eliminamos la palabra file:    
 
  
  For Each palabra In anombre
    ruta &= "/" & URLDecode(palabra)    
  Next
  
  pimagen = Picture[ruta]  
  
  With PictureBox1  
    .Picture = pimagen
    .Resize(pimagen.Width, pimagen.Height)  'Cambio el tamaño del picturebox al de la imágen
  End With  
  Me.Resize(pimagen.Width, pimagen.Height) 'Cambio el tamaño del formulario al de la imágen
  Me.Center
  
End

Public Sub PictureBox1_Drag()
  
  If Drag.Type <> Drag.Text Then Stop Event
  
End

Static Private Function URLDecode(txt As String) As String
  ''' Descodifica los caracteres hexadecimales en las URI's recorriendo la cadena dada
  ''' Params: txt la URI a descodificar
  ''' Return: la URI descodificada
  
  Dim txt_len As Integer
  Dim i As Integer
  Dim ch As String
  Dim digits As String
  Dim resultado As String
  
  resultado = ""
  txt_len = Len(txt)
  i = 1
  Do While i <= txt_len
    ' Examinar el siguiente caracter
    ch = Mid$(txt, i, 1)
    If ch = "+" Then
      ' Convertir a espacio
      resultado = resultado & " "
    Else If ch <> "%" Then
      ' Normal, no cambiar
      resultado = resultado & ch
    Else If i > txt_len - 2 Then
      resultado = resultado & ch
    Else
      ' Obtener los siguientes caracteres hex.
      digits = Mid$(txt, i + 1, 2)
      ' Debug digits
      ' aquí convertimos el valor hexadecimal a entero y
      ' se lo pasamos a Chr que devuelve el carácter correcto.
      resultado = resultado & Chr$(CInt(Val("&" & digits)))
      i = i + 2
    Endif
    i = i + 1
  Loop
  
  Return resultado
  
End

 


Aquí está el ejemplo corregido sin errores con la solución que ha propuesto Tincho.


Saludos

ArrastrarMostrarImagen.tar.gz
Descripción:  
Descargar
Nombre del archivo: ArrastrarMostrarImagen.tar.gz
Tamaño: 13.28 KB
Descargado: 62 veces
ArrastrarMostrarImagen.tar.gz
Descripción:  
Descargar
Nombre del archivo: ArrastrarMostrarImagen.tar.gz
Tamaño: 13.28 KB
Descargado: 62 veces
ArrastrarMostrarImagen.tar.gz
Descripción:  
Descargar
Nombre del archivo: ArrastrarMostrarImagen.tar.gz
Tamaño: 13.28 KB
Descargado: 62 veces

 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Viernes, 15 Julio 2016, 18:23; editado 2 veces 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Arrastrar Y Mostrar Imagen 
 
Parece no ir con todas las imágenes.

He tenido problemas con una imagen.

Si veo el array formado por cada división que se crea en anombre:

 fallo

Fijaros en el último elemento, el "cero".
Aunque yo dije esto en Split:

atmp = Split(anombre[anombre.max], "0:", "\r\n", True)
 


Obtengo en atmp esto:

 ultimoelementomal

No se ha quedado en un solo elemento nombre del archivo y la extensión.
A ver como se puede solucionar.

Otra cosa que quería comentar. Cada vez que soltamos una imagen en el picturebox, el formulario
debe centrarse.

Al principio se me ocurrió que por que no hacer eso en el resize del formulario. Pues eso no funciona.
Queda del centro a la derecha del escritorio.  

Una ayuda o una explicación de lo de arriba, please.

Si "0:" es el divisor en la sentencia split, ¿ cómo es que no lo ha dividido en dos partiendo de eso ?.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Arrastrar Y Mostrar Imagen 
 
Si queréis os paso la imagen en cuestión...mmmm..pero luego no digáis nada...eeeeh ?.
Es solo una imagen.  
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Arrastrar Y Mostrar Imagen 
 
Algo de info:

File_URI_scheme

Menudo tocho para leer:    

The file URI Scheme draft-ietf-appsawg-file-scheme-03

 smiley_loco_51629_1468568402_647626

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Arrastrar Y Mostrar Imagen 
 
Obtengo un error en este comando:
.Resize(pimagen.Width, pimagen.Height)  'Cambio el tamaño del picturebox al de la imágen


Creo que no llega a cargar la imagen.

Por ejemplo, si tengo un archivo imagen, llamado 100.png, en esta ruta: /tmp/100.png
si voy a ver su ruta
ruta = Drag.Data
Print ruta

obtengo esto en console:

-12:-34:64:6400.png
no hay la palabra "file".

saludos
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Arrastrar Y Mostrar Imagen 
 
Vuott:

El problema es con el carácter "0". No lo hice tan bien como debiese.  

La palabra "file" es eliminada en:

...
 If anombre[0] = "file:" Then anombre.Remove(0) 'Eliminamos la palabra file:    
...
 


Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Arrastrar Y Mostrar Imagen 
 
Mas información sobre uri, url y urn

Localizador de recursos uniforme

Vaya nombre.  

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Arrastrar Y Mostrar Imagen 
 
Vuott:

Si usas el modo depuración y pasas el cursor por la palabra ruta, veras que aparece la palabra file.

 muestra_1468569858_828228

Probé a renombrar un archivo para ver el error.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Arrastrar Y Mostrar Imagen 
 
Para que veas que aparece la palabra file.
Debes colocar un punto de ruptura en un lugar adecuado.
Ejemplo en la línea 13.

anombre = Split(ruta, "/", "\r\n", True)
 


 mostrarfile



Ah, no es que el código sea complejo. El complicado soy yo.  
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Arrastrar Y Mostrar Imagen 
 
Shell escribió: [Ver mensaje]
Vuott:

El problema es con el carácter "0". No lo hice tan bien como debiese.  

La palabra "file" es eliminada en:

...
 If anombre[0] = "file:" Then anombre.Remove(0) 'Eliminamos la palabra file:    
...
 


Saludos


No, porqué yo puse la raya antes de
...
 If anombre[0] = "file:" Then anombre.Remove(0) 'Eliminamos la palabra file:    
...
 



es decir:

Public Sub PictureBox1_Drop()  
  
  Dim anombre As String[]
  Dim ruta As String  
  Dim palabra As String
  Dim pimagen As Picture
  Dim atmp As String[]  
  
  ruta = Drag.Data

     Print ruta   <<==========

  anombre = Split(ruta, "/", "\r\n", True)
  ruta = ""
  
  If anombre[0] = "file:" Then anombre.Remove(0)



Saludos
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Mostrar Imagen Asociada A Un Archivo destroyer General 14 Jueves, 12 May 2011, 04:43 Ver último mensaje
Invitado
No hay nuevos mensajes Mostrar Y Redimensionar Una Imagen Con La ... shordi Aplicaciones/Fragmentos de Código 3 Sabado, 25 Junio 2011, 22:39 Ver último mensaje
ivanovichenco
No hay nuevos mensajes Ejemplo DragDrop Con Imagen. Arrastrar Y B... Shell Aplicaciones/Fragmentos de Código 2 Sabado, 09 Marzo 2013, 10:10 Ver último mensaje
shordi
No hay nuevos mensajes Mostrar Imagen Desde Web datobinario Controles/Librerías/Componentes 4 Viernes, 06 Septiembre 2013, 12:04 Ver último mensaje
vuott
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron