Ver Mensaje Individual
  #3 (permalink)  
Antiguo 23/11/2010, 04:49
Avatar de anonymous
anonymous
 
Fecha de Ingreso: noviembre-2010
Mensajes: 9
Antigüedad: 13 años, 6 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.