Como Cargar Una Imagen Al Azar En Un Picturebox


Ir a la página 1, 2  Siguiente

Objetivo: Como Cargar Una Imagen Al Azar En Un Picturebox
Hola a todos. tengo una carpeta con imágenes dentro de la carpeta del programa , 1,png, 2.png, 3.png. etc. Necesito que al pulsar un boton, al azar se cargue una de las imagenes en el picturebox. Me pueden orientar un poco, pues estoy desorientado. No logro centrarme para sacarle punta a este problemita.
Perdonen la simpleza de la pregunta.:mrviolet:

Perfil MP  
Objetivo: Re: Como Cargar Una Imagen Al Azar En Un Picturebox
Hola Ivan!.

Creo que te ayudara este ejemplo.


PUBLIC nombredeimagenes AS NEW String[]

PUBLIC SUB Form_Open()
DIM fichero AS String

FOR EACH fichero IN Dir(User.Home & "/Imágenes/", "*.*")
nombredeimagenes.Add(fichero)
NEXT

END


PUBLIC FUNCTION imagenazar() AS Integer
DIM r AS Integer

r = Rnd(0, nombredeimagenes.Count)
RETURN r

END


PUBLIC SUB Button1_Click()
Imagen.Picture = Picture[User.home & "/Imágenes/" & nombredeimagenes[imagenazar()]]
END



Si tienes una duda sobre el código, pregunta.

Objetivo: Re: Como Cargar Una Imagen Al Azar En Un Picturebox
Hola.

la verdad es simple, ya que dices que tus archivos tienen un número de nombre que imagino es correlativo. Si sabes la cantidad de archivos "ficheros" que hay en tu carpeta contenedora. por ejemplo imagina que son 1000.

solo en una linea dentro de un botom escribes:


PUBLIC SUB Button1_Click()

Imagen.Picture = Picture[User.home & "/contenedora/" & Rnd(0, 1000) & ".png"]


end
si quieres mayor estructura, declarar variables, modelar funciones y todo eso.... el ejemplo de nuestro amigo Shell es ideal

y como tu mismo dijiste amigo Ivan.. perdona la simpleza de mi respuesta.

última edición por Ronny el Miercoles, 01 Junio 2011, 14:34; editado 5 veces
Objetivo: Re: Como Cargar Una Imagen Al Azar En Un Picturebox
Gracias a los dos por las respuestas.
Pongo manos a la obra.

Perfil MP  
Objetivo: Re: Como Cargar Una Imagen Al Azar En Un Picturebox
Yo creo que la mejor solución es utilizar un DIR y obtener un string[] con todos los nombres de ficheros presentes en la carpeta.

El string[] tiene como valor mínimo 0 y como valor máximo el .MAX.

Para elegir un valor aleatorio basta con hacer un RND entre 0 y MAX. Supongamos que el valor obtenido es X. Pues la imagen a cargar es string[x]

Perfil MP  
Objetivo: Re: Como Cargar Una Imagen Al Azar En Un Picturebox
Bueno, no me cargaron al azar
Aqui esta el archivo del código fuente por si alguien me hecha una manito.
Hice varios intentos y al final me parece de esta forma la mas sencilla que debiera funcionar pero no funciona.
Le cambie de lugar las comas de la ruta pero nada. por ningún lado funciona. he mirado ejemplos de gambas pero ninguno se asimila a lo que quiero. Me quedo grande este ejercicio.

http://dl.dropbox.com/u/13566068/picture_azar.tar.gz

última edición por ivanovichenco el Miercoles, 01 Junio 2011, 17:43; editado 2 veces
Perfil MP  
Objetivo: Re: Como Cargar Una Imagen Al Azar En Un Picturebox
Citar:
PictureBox1.Picture = Picture["imagenes/Rnd(0, 4)&.png"]

Eso está mal. No puedes concatenar un string así. En todo caso "imagenes/" & Rnd(0,4) & ".png"

Y sigo diciendo que lo que yo dije es lo mejor porque puedes utilizar cualquier nombre y extensión.

Además a mi modesto entender te falta el user.home a esa dirección.

Un saludo


Perfil MP  
Objetivo: Re: Como Cargar Una Imagen Al Azar En Un Picturebox
PictureBox1.Picture = Picture["1.png"]
Soplo, pero me carga asi una imagen, sin user.home, por eso pienso que deberia cargar con ese codigo, pero no carga.

Perfil MP  
Objetivo: Re: Como Cargar Una Imagen Al Azar En Un Picturebox
Prueba esto:

PictureBox1.Picture = Picture.Load("imagenes/" & Int(Rnd(1, 4)) & ".png")


Suerte

Perfil MP  
Objetivo: Re: Como Cargar Una Imagen Al Azar En Un Picturebox
Bueno siguiendo con el tema de los números aleatorios e imágenes, puedo decir que cargar el grupo de directorio tal como lo establece nuestro amigo es una buena idea. No soy nadie para decir si es la mejor o peor idea, creo que depende de ciertos elementos a tomar en cuenta como memoria, además de validaciones. imagina que en la carpeta de imágenes, alguien grabara un archivo sin formato de imagen y aleatoriamente se tomara y picture intentara mostrarlo... bueno muchos casos pueden pasar.... ademas si uso png estoy estandarizando que se use un formato totalmente libre en la aplicación.. y pare de contar. es un saco de donde sacar cosas.......


Mi idea no es la mejor y no la presenté por serlo, sino por ser la mas corta y facil de entender tal como dijistte (Ivan) al inicio....

yo estoy terminando una macro apliacion en la cual cada módulo carga aleatoriamente un personaje histórico y hace referencia a una imagen almacenada en disco en formato png tal como hiciste tu 1.png, 2.png.. y te digo que ese número proviene del id de la tabla....

te muestro la interfaz gráfica.
muestra



el código utilizado en la aplicación para la carga de la imagen es sencillo:


PUBLIC SUB Form_Open()
'***************************************
DIM hres AS Result 'viene
DIM SQL AS String ' viene
DIM salio, numreg AS Integer
DIM xarchivo AS String

'se inicializa la semilla para cargar el generador de números pseudoaleatorios
RANDOMIZE

'cargan los registros la tabla personajes en la variable hres
hres = Main.hconn.Exec("select * from personajes")

'cuenta el numero de registros de la tabla
numreg = hres.Count
'genera un numero pseudoaleatorio en el intervalo entre 1 y el numero de registros
salio = Int(Rnd(1, numreg))
'mueve el puntero hasta el numero pseudoaleatorio
hres.MoveTo(salio - 1)
'carga la informacion el el textLabel correspondiente
xpersonaje.Text = hres["personaje"]
xdescripcion.Text = hres["descripcion_personaje"]
'concateno el string que voy a pasar al picturebox
xarchivo = "personajes/" & salio & ".png"
'label2.Text = xarchivo
PictureBox1.Picture = Picture[xarchivo]


OBSERVA ES LO MISMO QUE TE ENVIE PERO CON UNA BDD.
y que User.home no es necesario ya que la ruta se toma como relativa desde gambas.

Alguien me preguntó un día quie que pasaba si me eliminaban las imágenes de la carpeta PERSONAJES. y lo que hice al inicio fue un cheksum lo que valida que las imágenes solo se pueden eliminar desde la aplicacion. si alguien elimina alguna manualmente, un servicio de la aplicacion lo dtecta como faltante y la restaura desde una carpeta de respaldo comprimida y oculta contra una BDD.

Te confiezo que no he podido ver el código que escribiste ya que el enlace me dio problemas. a por cierto no olvides el RANDOMIZE
Por último, esta imagn de la aplicacion que te envíe tiene cortes (editada) debido a que no se ha liberado e involucra losgos de entes gubernamentales..


PD. Recuerda que ahorita con estas herramientas es facil generar nnúmeos aleatorios... cuando utilizaba un lenguaje que no lo permitía debia recurrir a ensamblador... y ahi si es complicado. te dejo la rutina pra aque la guardes en tu repositorio de código

random:
db 0b8h ; mov ax,seed1
seed1: db 0,0

dec ax ; decrement

randloop:
db 35h ; xor ax,seed2
seed2: db 0,0
inc ax ;
xchg ah,al
xor [seed2],ax ; 0.092
sub ax,[seed1]
rol al,1 ; 0.091
xchg ah,al ; 0.092
sub [seed1],ax ; change seed1
ret
por supuesto, aqui dejas a punto los registros y entonces aplicas un método matemático predictivo como la ecuación de punto de silla de Rosenbrock u otro conocido.

última edición por Ronny el Miercoles, 01 Junio 2011, 20:28; editado 5 veces
Ir a la página 1, 2  Siguiente

Página 1 de 2


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.391s (PHP: -80% SQL: 180%)
Consultas SQL: 47 - Debug off - GZIP Activado