Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: nolasco281 en 3 Agosto 2015, 09:15 am



Título: Imagenes aleatorias
Publicado por: nolasco281 en 3 Agosto 2015, 09:15 am
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
  1. 'Imagenes aleatorias
  2. Dim imagenes As Integer
  3. Dim aleatorio As New Random
  4. Dim listaImagenes As New ArrayList
  5.  
  6. 'Agrego imagenes al arreglo
  7. listaImagenes.Add(My.Resources.1)
  8. listaImagenes.Add(My.Resources.2)
  9. imagen = aleatorio.Next(0, listaImagenes.Count -1)
  10. lblImagen.Image = 'Aca no se que hacer para cargar la imagen
  11.  



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

Código
  1. Dim imagenes As Integer
  2. Randomize()
  3. imagenes = Int(Rnd() * 2) + 1
  4. Select Case imagenes
  5.   Case 1 : lblImagen.Image = My.Resources.1
  6.   Case 2 : lblImagen.Image = My.Resources.2
  7. End Select
  8.  

Gracias y saludos


Título: Re: Imagenes aleatorias
Publicado por: Eleкtro en 3 Agosto 2015, 15:16 pm
ya 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
  1. Dim rnd As New Random
  2. Dim imgList As New ArrayList
  3.  
  4. With imgList
  5.    imgList.Add(...)
  6.    imgList.Add(...)
  7. End With
  8.  
  9. 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
  1. Dim images As IEnumerable(Of DictionaryEntry) =
  2.    From resource As DictionaryEntry
  3.    In My.Resources.ResourceManager.GetResourceSet(CultureInfo.CurrentCulture, True, True).Cast(Of DictionaryEntry)()
  4.    Where TypeOf resource.Value Is Bitmap
  5.  
  6. Dim rnd As New Random
  7. Dim rndIndex As Integer = rnd.Next(0, images.Count)
  8.  
  9. With lblImagen
  10.    .Text = String.Format("Index: {0}, Name: {1}", CStr(rndIndex), CStr(images(rndIndex).Key))
  11.    .Image = DirectCast(images(rndIndex).Value, Image)
  12. 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.


Título: Re: Imagenes aleatorias
Publicado por: nolasco281 en 3 Agosto 2015, 15:36 pm
Citar
¿Qué complicación le encuentras al código?

no sabia como asignarle la imagen al label

Esta parte
Código
  1. 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.
(http://1.bp.blogspot.com/-TOCl3NmTp4g/Vb9tLIbB0BI/AAAAAAAAA_s/qqY0t0K2SRA/s1600/Segmentos.png)

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

Citar
Dependiendo 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.


Título: Re: Imagenes aleatorias
Publicado por: Eleкtro en 3 Agosto 2015, 15:44 pm
Cita de: Elektro
Dependiendo 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 (https://msdn.microsoft.com/en-us/library/system.windows.forms.imagelist.imagesize%28v=vs.110%29.aspx)

Cita de: MSDN
The 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