Imagenes aleatorias

Iniciado por nolasco281, 3 Agosto 2015, 09:15 AM

0 Miembros y 1 Visitante están viendo este tema.

nolasco281

Hola como estan.

Como dice en el tema no se como mostrar imagenes alearioas en un label.

Este es mi codigo no se como hacer cambiar la imagen

Código (vbnet) [Seleccionar]

'Imagenes aleatorias
Dim imagenes As Integer
Dim aleatorio As New Random
Dim listaImagenes As New ArrayList

'Agrego imagenes al arreglo
listaImagenes.Add(My.Resources.1)
listaImagenes.Add(My.Resources.2)
imagen = aleatorio.Next(0, listaImagenes.Count -1)
lblImagen.Image = 'Aca no se que hacer para cargar la imagen





Hola se podra decir que ya lo resolvi de alguna manera pero me gustaria como hacer funcionar el de arriba.

Código (vbnet) [Seleccionar]

Dim imagenes As Integer
Randomize()
imagenes = Int(Rnd() * 2) + 1
Select Case imagenes
  Case 1 : lblImagen.Image = My.Resources.1
  Case 2 : lblImagen.Image = My.Resources.2
End Select


Gracias y saludos
Lo que se puede imaginar... se puede programar.

Eleкtro

#1
Cita de: nolasco281 en  3 Agosto 2015, 09:15 AMya lo resolvi de alguna manera pero me gustaria como hacer funcionar el de arriba.

¿Qué complicación le encuentras al código?, solo debes usar el índice de la colección y, en caso de que estés usando Option Strict On, castear el objeto para evitar errores den tiempo de compilación.

Código (vbnet) [Seleccionar]
Dim rnd As New Random
Dim imgList As New ArrayList

With imgList
   imgList.Add(...)
   imgList.Add(...)
End With

lblImagen.Image = DirectCast(imgList(rnd.Next(0, imgList.Count - 1)), Drawing.Image)


¿Pero hay alguna razón en especial por la que estés usando un ArrayList?, en caso contrario, deja de usarlo y simplemente utiliza un List(Of Bitmap).

Sin conocer mucho tus necesidades con esas imágenes, yo tal vez lo haría de la siguiente manera que quizás te pueda servir de algo:

Código (vbnet) [Seleccionar]
Dim images As IEnumerable(Of DictionaryEntry) =
   From resource As DictionaryEntry
   In My.Resources.ResourceManager.GetResourceSet(CultureInfo.CurrentCulture, True, True).Cast(Of DictionaryEntry)()
   Where TypeOf resource.Value Is Bitmap

Dim rnd As New Random
Dim rndIndex As Integer = rnd.Next(0, images.Count)

With lblImagen
   .Text = String.Format("Index: {0}, Name: {1}", CStr(rndIndex), CStr(images(rndIndex).Key))
   .Image = DirectCast(images(rndIndex).Value, Image)
End With


Dependiendo del tamaño de las imágenes (y de tus necesidades), también podrías optar por utilizar un objeto de tipo ImageList para "administrar" las imágenes tanto en tiempo de diseño como en tiempo de ejecución, sin necesidad de interactuar con más listas/objetos de por medio.

Saludos.








nolasco281

#2
Citar¿Qué complicación le encuentras al código?

no sabia como asignarle la imagen al label

Esta parte
Código (vbnet) [Seleccionar]
lblImagen.Image = DirectCast(imgList(rnd.Next(0, imgList.Count - 1)), Drawing.Image)

Lo que pasa es que tengo dos labels y tres segmentos de carretera es decir que cuando el primer segmento desapareca y vuelva aparecer deberia ser aleatorio ya sea una recta una cuesta o una bajada

Aca solo hay dos segmentos es decir despues de que desapareca la recta puede venir otra recta o una curva o bajada. Claro despues de ese label con la curba que esta ahi.


Citar¿Pero hay alguna razón en especial por la que estés usando un ArrayList?
Que solo me tome las imagenes que hay en el array es decir segmento1, segmento2, segmento3

CitarDependiendo del tamaño de las imágenes
Tama~no en que sentido peso de la imagen (kb, MB) o tama~no (ancho, largo)
Creo que es tama~no (ancho, largo)

Muchas gracias por respoder.
Lo que se puede imaginar... se puede programar.

Eleкtro

#3
Cita de: nolasco281 en  3 Agosto 2015, 15:36 PM
Cita de: ElektroDependiendo del tamaño de las imágenes
Tama~no en que sentido peso de la imagen (kb, MB) o tama~no (ancho, largo)

Me refiero al ancho y largo, que está bastante limitado al tamaño estándar de icono "grande" (aunque hoy en día los hay de 512x512 hasta 1024x1024, pero bueno...)

ImageList.ImageSize Property - MSDN

Cita de: MSDNThe Size that defines the height and width, in pixels, of the images in the list.
The default size is 16 by 16.
The maximum size is 256 by 256.

Saludos