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