Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





¿Por qué no me muestra la imagen? (VB2005)

Iniciado por J_F_NASH, 09 de Mayo de 2008, 09:03:57 PM

« anterior - próximo »

J_F_NASH

Cuando creo mi propio objeto PictureBox no logro visualizar la imagen cargada ¿por qué?

Dim Foto As New PictureBox

Foto.Image = Image.FromFile("imgsarril.png")
Foto.Location = New Point(10, 10)

Zaelsius

Para visualizar la imagen necesitas añadir el control a tu formulario.

J_F_NASH

¿Te refieres a colocar en la vista diseño tantos controles picturebox como necesite?

[EX3]

Cita de: "J_F_NASH"¿Te refieres a colocar en la vista diseño tantos controles picturebox como necesite?
En absoluto. Como dice ZaeLSiuS, tienes que agregar el control creado al formulario o control contenedor (otro picturebox o un frame por ejemplo). Para ello existe la coleccion Controls en estos contenedores:
Me.Controls.Add(Foto)
Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

J_F_NASH


J_F_NASH

Vaya, tengo otro problema. ¿El siguiente código no debería mostrar una imagen al lado de la otra? ¿por que solo me muestra la primera?:
      Dim barril_1 As New PictureBox
       Dim barril_2 As New PictureBox

       barril_1.Image = Image.FromFile("imgs\barril.png")
       barril_2.Image = Image.FromFile("imgs\barril.png")

       Controls.Add(barril_1)
       Controls.Add(barril_2)

       barril_1.Location = New Point(10, 10)
       barril_2.Location = New Point(40, 10)


S2.

[EX3]

Cuando creas un control desde codigo este generalmente suele tener todas sus propiedades sin inicializar, justo al contrario que al crearlos en la vista de diseño. En el caso del PictureBox no tendra definido su tamaño. Yo en mi prueba he configurado el tamaño de los controles y si los muestra:
barril_1.Size = New Point(40, 40)
barril_2.Size = New Point(40, 40)

Tambien puedes usar el autoescalado de este control si no quieres configurar a mano el tamaño:
barril_1.SizeMode = PictureBoxSizeMode.AutoSize
barril_2.SizeMode = PictureBoxSizeMode.AutoSize

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt


J_F_NASH

Bueno, ya que estoy pregunto otra cosilla. Es sobre concatenaciones:
Tengo 2 PictureBox llamados "barril_1" y "barril_2" ahora quiero llamar a una de sus propiedades dinámicamente. En el ejemplo tal vez se vea mas claro lo que quiero hacer:
dim valor as integer = 1
"barril_"  & valor.propiedad = false    '<-------- ¿?


¿Puede hacerse algo como esto?

[EX3]

José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

[EX3]

Para eso existen los arrays y las colecciones como listas tipadas :P (que aparte de organizar mejor los objetos de un grupo optimiza mejor el acceso a memoria). Si vas a meter varios objetos similares o relacionados (los tiles de un mapa por ejemplo) metelos en una coleccion, de esta forma podras acceder mediante su indice de posicion o mediante una clave string si se trata de un diccionario.

Dim barril As New List<Of PictureBox> ' Creamos una lista de tipo PictureBox.

Dim pic As PictureBox

pic = New PictureBox
pic.Image = Image.FromFile(etc...)
pic.Location = etc...
... todo el codigo de inicializacion del picturebox ...
barril.Add(pic) 'Agregamos el picture a la lista.
Me.Controls.Add(barril(barril.Count - 1) ' Añadimos la referencia del ultimo elemento añadido en la colecion de barriles a la coleccion de controles del formulario.

... Creamos y añadimos tantos como nos venga en gana ...

Luego para acceder a los miembros de un elemento concreto seria tan facil como esto:
Dim valor As Integer = 1
barril(valor).propiedad = false

La otra ventaja es que tambien puedes moverte por los elementos de la lista mediante un For Each si has de hacer modificaciones en masa a todos los elementos de la lista.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

J_F_NASH







Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.