Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

imagenes en vb6

Estas en el tema de imagenes en vb6 en el foro de Visual Basic clásico en Foros del Web. Buenas, a ver si alguien me puede ayudar que estoy un poco verde en esto de visual... Resulta que estoy intentando intercambiar las posiciones de ...
  #1 (permalink)  
Antiguo 22/11/2010, 16:10
Avatar de anonymous  
Fecha de Ingreso: noviembre-2010
Mensajes: 9
Antigüedad: 13 años, 5 meses
Puntos: 0
imagenes en vb6

Buenas, a ver si alguien me puede ayudar que estoy un poco verde en esto de visual...

Resulta que estoy intentando intercambiar las posiciones de varias imagenes aleatoriamente a base de guardar su posicion y cambiarla aleatoriamente por una de las guardadas pero el caso es que siempre hay alguna que me sale debajo de la otra. ¿Como puedo hacer para que no me coincidan las posiciones?

Espero haberme explicado, gracias
  #2 (permalink)  
Antiguo 22/11/2010, 16:38
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: imagenes en vb6

Sin ver tu código ni saber bien lo que intentas no se puede saber donde tienes el fallo.

De todas formas, si te he entendido, lo que quieres hacer no deberia fallar si intercambias las imagenes por parejas.

P.ej. si tienes las imagenes: 12345678
solo tienes que ir intercambiandolas en parejas aleatorias: (3,6)-12645378, (1,4)-42615378, etc y nunca te quedará una imagen sobre otra. Aunque reemplaces una imagen por si misma seguiras teniendo las 8 imagenes colocadas y al cabo de unos cuantos cambios todas habran cambiado de sitio.

El tema está en que intentas hacer y como lo planeas hacer.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #3 (permalink)  
Antiguo 23/11/2010, 04:49
Avatar de anonymous  
Fecha de Ingreso: noviembre-2010
Mensajes: 9
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: imagenes en vb6

La idea es esta:

Tengo un form con x imagenes no visibles, de las que guardo su posicion top y left en dos arrays (ancho, alto).

Lo que pretendo hacer es colocar las imagenes en esas posiciones predefinidas, con los atributos top y left de manera aleatoria, es decir que nunca se sabe que imagen va a salir en cada posicion.

Algo así:

Almaceno las posiciones iniciales:

ancho(0)=imagen(0).left -> esto por cada imagen
alto(0)=imagen(0).top -> esto por cada imagen

Llamo a esta funcion para generar aleatorios no repetidos conprendidos entre un rango:

# Aleatorios no repetidos
#
# Function Generar_Aleatorio(Numero As Long)
#
# ' Vector para almacenar los números aleatorios
# Dim Aleatorios() As Integer
#
# Dim n As Long, i As Long
#
# 'Redimensiona el vector
# ReDim Aleatorios(Numero) As Integer
#
# 'Recorre el vector
# For i = LBound(Aleatorios()) + 1 To UBound(Aleatorios())
#
# n = i
#
# Do
# n = n - 1
# ' Compara hacia atrás, si está repetido genera un nuevo _
# número y lo guarda en el índice del vector _
# que estaba repetido, es decir en esa posición
#
# If Aleatorios(i) = Aleatorios(n) Then
# Aleatorios(i) = Int(((Numero + 1) * Rnd) + 0)
# n = i
# End If
#
# Loop Until n = 0
#
# Next
#
# generar_aleatorio=aleatorios
#
# End Function

PD: la funcion no me funciona con el valor 0 y no se como cambiarla para que me funcione (la he sacado de Internet).

anchos=generar_aleatorio(5) -> guardo los numeros aleatorios
altos=generar_aleatorio(5)

Luego para colocarlos:

x=0

imagen(0).left=ancho(anchos(x))
imagen(0).top=alto(altos(x))

x=x+1

imagen(1).left=ancho(anchos(x))
imagen(1).top=alto(altos(x))

....

Luego muestro las imagenes:

For x=0 To 3
imagen(x).visible=True
imagen2(x).visible = True
Next

Pero siempre me sale uno debajo de otro.

Todo esto debe funcionar al hacer click a un commandbutton.

Si necesitas mas código dimelo.

Gracias de antemano.
  #4 (permalink)  
Antiguo 23/11/2010, 06:10
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: imagenes en vb6

Está complicado porque la funcion devuelve la matriz sin usar el elemento ni el valor 0, pero tambien te has complicado la vida creando 2 matrices para la posicion, y creo que eso es lo que genera tu problema de superposicion.

Te he creado este nuevo código que solo necesita añadirle la función "Generar_Aleatorio" que no la incluyo por no repetir. Lleva una matriz de 5 imagenes y un command1.

Código vb:
Ver original
  1. Private Type Posicion
  2.   X As Single
  3.   Y As Single
  4. End Type
  5.  
  6. Dim Posiciones(4) As Posicion
  7.  
  8. Private Sub Form_Load()
  9.  
  10.   Dim f As Integer
  11.  
  12.   Image1(0).Picture = LoadPicture("foto1.jpg")
  13.   Image1(1).Picture = LoadPicture("foto2.jpg")
  14.   Image1(2).Picture = LoadPicture("foto3.jpg")
  15.   Image1(3).Picture = LoadPicture("foto4.jpg")
  16.   Image1(4).Picture = LoadPicture("foto5.jpg")
  17.    
  18.   ' guardamos las posiciones
  19.  For f = 0 To 4
  20.     Posiciones(f).X = Image1(f).Left
  21.     Posiciones(f).Y = Image1(f).Top
  22.   Next f
  23.  
  24. End Sub
  25.  
  26. Private Sub Command1_Click()
  27.   Dim MatrizAleatoria() As Integer
  28.   Dim f As Long
  29.   ' cargamos la matriz
  30.  MatrizAleatoria = Generar_Aleatorio(5)
  31.  
  32.   ' recolocamos las imagenes
  33.  For f = 0 To 4
  34.     Image1(f).Left = Posiciones(MatrizAleatoria(f + 1) - 1).X
  35.     Image1(f).Top = Posiciones(MatrizAleatoria(f + 1) - 1).Y
  36.   Next f
  37.  
  38. End Sub
Saludos
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Última edición por pkj; 23/11/2010 a las 06:28
  #5 (permalink)  
Antiguo 23/11/2010, 09:19
Avatar de anonymous  
Fecha de Ingreso: noviembre-2010
Mensajes: 9
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: imagenes en vb6

¿es obligatorio usar loadpicture? digamos que no termino de verle la utilidad.



Gracias por la ayuda.

Última edición por anonymous; 23/11/2010 a las 09:52
  #6 (permalink)  
Antiguo 23/11/2010, 10:21
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: imagenes en vb6

No es obligatorio. Los pictures los cargas como más te guste. Es la primera manera que se me ha ocurrido. Espero que lo demás te sirva de ayuda.

Saludos
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #7 (permalink)  
Antiguo 23/11/2010, 14:41
Avatar de anonymous  
Fecha de Ingreso: noviembre-2010
Mensajes: 9
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: imagenes en vb6

Acople tu código y.... funciona!!

Muchisimas gracias, eres un crack!


Etiquetas: imagenes, vb
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 04:50.