Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: elg.system.32 en 9 Abril 2015, 21:14 pm



Título: Cargar Imagen en botones mediante codigo en C# (Windows Form)
Publicado por: elg.system.32 en 9 Abril 2015, 21:14 pm
Hola a todos.

Me gustaria realizar un juego Mental o juego de pares o juego de la memoria.

Para esto practico tratando de resolver mi primer problema que es Cargar Imagen en botones mediante codigo. asi que empece a realizar esta solucion o proyecto.


(http://i60.tinypic.com/2ik71nm.jpg)

(http://i60.tinypic.com/f1d45s.jpg)

(http://i58.tinypic.com/21edz5v.jpg)

(http://i62.tinypic.com/v32bfp.jpg)

Agregué una carpeta denominado "imagenes" dentro la solucion o proyecto.

(http://i62.tinypic.com/1z64c3r.jpg)

En dicha carpeta "imagenes" tengo varias imagenes (Imagen_001, Imagen_002, Imagen_003, Imagen_004, Imagen_005 y Imagen_006).

(http://i57.tinypic.com/23mampk.jpg)

De momento cuando ejecuto el programa me sale asi:

(http://i59.tinypic.com/15zip14.jpg)

Ahora necesito cargar una imagen desde esta carpeta "imagenes" al boton [Btn_Carga] para asi mostrarse la imagen en el boton.

Tambien indicar que la ruta de las imagenes deben de ser relativas y no absulotas. cosa que cuando ejecute este proyecto en otro computador no me genere problemas o error de ruta.

Espero puedan ayudarme para que pueda continuar en esta etapa de crear el juego mencionado anteriormente.

Gracias y saludos.


 
:laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh:


Título: Re: Cargar Imagen en botones mediante codigo en C# (Windows Form)
Publicado por: ivancea96 en 9 Abril 2015, 21:23 pm
Algo como:
Código
  1. button.BackgroundImage = Image.FromFile(@"imagenes/img.jpg");


Título: Re: Cargar Imagen en botones mediante codigo en C# (Windows Form)
Publicado por: DarK_FirefoX en 9 Abril 2015, 21:29 pm
Dos formas, una como dice ivancea96:

Código
  1. button.BackgroundImage = Image.FromFile(@"rutaImagen.jpg");

Otra:

Código
  1. FileStream file = new FileStream("rutaImagen.jpg", FileMode.Open);
  2. Image toLoad = Image.FromStream(file);
  3. button.Image = toLoad;
  4.  

Mod: Clase FileStream dentro de System.IO;

Salu2s


Título: Re: Cargar Imagen en botones mediante codigo en C# (Windows Form)
Publicado por: elg.system.32 en 9 Abril 2015, 21:31 pm
Primero agradecer por las respuestas y lo intentare de ambas formas luego indico como me va.

Gracias.



 
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)


Título: Re: Cargar Imagen en botones mediante codigo en C# (Windows Form)
Publicado por: elg.system.32 en 9 Abril 2015, 21:48 pm
Hola de nuevo.

coloque este código en el evento load del formulario segun me indicaron:

Segun ivancea96:


Código
  1. private void Frm_CargarImagenEnBoton_001_Load(object sender, EventArgs e)
  2. {
  3.  Btn_Carga.BackgroundImage = Image.FromFile(@"imagenes/Imagen_001.png");
  4. }
  5.  

Segun DarK_FirefoX:

Código
  1. using System.IO;
  2.  
  3. private void Frm_CargarImagenEnBoton_001_Load(object sender, EventArgs e)
  4. {
  5.  FileStream file = new FileStream(@"imagenes/Imagen_001.png", FileMode.Open);
  6.  Image toLoad = Image.FromStream(file);
  7.  Btn_Carga.Image = toLoad;
  8. }
  9.  

pero no carga ninguna imagen en el boton, como tampoco me marca ningun tipo de error.

No estoy seguro si utilice mal las sugerencias o necesito hacer algo mas, espero sus observaciones.

Saludos.


 
:-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-(


Título: Re: Cargar Imagen en botones mediante codigo en C# (Windows Form)
Publicado por: Eleкtro en 9 Abril 2015, 21:57 pm
Buenas

1. Aunque puedes cargar imágenes locales, es bastante feo e improductivo, deberías utilizar la infraestructura Settings para añadir tus recursos de imágenes a la tabla de recursos administrada.
En las propiedades del proyecto puedes administrar los recursos.

2. En la imagen que has mostrado estás colocando la carpeta "imagenes" en el directorio de la solución, no en el directorio de compilación, que sería ...\Bin\Debug y ...\Bin\Release dependiendo del modo de compilación.

PD: Formula futuras dudas sobre C# en la sección correcta de programación dedicada a la plataforma .Net

Saludos


Título: Re: Cargar Imagen en botones mediante codigo en C# (Windows Form)
Publicado por: DarK_FirefoX en 9 Abril 2015, 22:34 pm
Como bien dice Eleкtro, estás utilizando una ruta relativa, por lo tanto la carpeta imágenes debe estar dentro ...\Bin\Debug y/o ...\Bin\Release dependiendo del modo de compilación. En otro caso puedes probar a usar una ruta absoluta

También hay que ver cuál es el objetivo de cargar las imágenes, si quieres que el usuario añada la imagen que quiera o tienes algunas predefinidas, en el segundo caso, deberías hacer uso de, como dice Eleкtro, la infraestructura Settings para manejar los recursos de imágenes.

Salu2s


Título: Re: Cargar Imagen en botones mediante codigo en C# (Windows Form)
Publicado por: elg.system.32 en 9 Abril 2015, 23:05 pm
Como bien dice Eleкtro, estás utilizando una ruta relativa, por lo tanto la carpeta imágenes debe estar dentro ...\Bin\Debug y/o ...\Bin\Release dependiendo del modo de compilación. En otro caso puedes probar a usar una ruta absoluta

También hay que ver cuál es el objetivo de cargar las imágenes, si quieres que el usuario añada la imagen que quiera o tienes algunas predefinidas, en el segundo caso, deberías hacer uso de, como dice Eleкtro, la infraestructura Settings para manejar los recursos de imágenes.

Salu2s

Que tal DarK_FirefoX.

Es necesario hacer esto que indicas de colocar la carpeta "imagenes" dentro de ...\Bin\Debug y/o ...\Bin\Release.


Esto se debe hacer por que es lo mas correcto o solo por la facilidad de trabajar. espero no cansar con estas preguntas, solo que quisiera hacer de manera correcta.

Agregue esta carpeta "imagenes" mediante el editor o Programa visual Estudio


(http://i57.tinypic.com/210lj47.jpg)

y este la agrego en esta parte de la solucion o programa:

(http://i62.tinypic.com/1z64c3r.jpg)


por esta razon esperaba cargar las imagenes de esta carpeta.

Saludos


Título: Re: Cargar Imagen en botones mediante codigo en C# (Windows Form)
Publicado por: Eleкtro en 9 Abril 2015, 23:21 pm
Agregue esta carpeta "imagenes" mediante el editor o Programa visual Estudio[/size]

Eso solo sirve para manejar la estructura del proyecto, separa de tu mente lo que es el proyecto con la forma en la que trabaja el ensamblado que compilas.

Si tu archivo 'compilado.exe', es decir si tú código fuente, va a cargar imagenes locales entonces no necesitas añadir esas imagenes al proyecto.

Es necesario hacer esto que indicas de colocar la carpeta "imagenes" dentro de ...\Bin\Debug y/o ...\Bin\Release.[/size]

Esto se debe hacer por que es lo mas correcto o solo por la facilidad de trabajar. espero no cansar con estas preguntas, solo que quisiera hacer de manera correcta.

vamos a ver, para que lo entiendas mejor:

La carpeta "imagenes" se encuentra aquí:
Código:
Directorio raíz del proyecto

El proyecto que compilas se encuentra aquí:
Código:
Directorio raíz del proyecto\Bin\Debug

Cómo ves, el directorio de las imagenes lo pusiste 2 niveles superiores al directorio de compilación, así que si usases una ruta relativa tendrías que subir dos niveles del directorio de trabajo actual para acceder al directorio "imagenes":
Código
  1. Image.FromFile(@"./../../imagenes/imagen_001.png");

Obviamente NO quieres eso, por que no tiene sentido distribuir una aplicación de esa manera.

Por ende, debes coloca la carpeta "imagenes" en el mismo directorio donde se encuentra el executable que has compilado (programa.exe).

Saludos


Título: Re: Cargar Imagen en botones mediante codigo en C# (Windows Form)
Publicado por: elg.system.32 en 9 Abril 2015, 23:45 pm

Por ende, debes coloca la carpeta "imagenes" en el mismo directorio donde se encuentra el executable que tu proyecto ha compilado.

Saludos

Ya puse la carpeta "imagenes" en ...\Bin\Debug y me funciona con cualquiera de estos codigos:

Segun ivancea96:


Código
  1. private void Frm_CargarImagenEnBoton_001_Load(object sender, EventArgs e)
  2. {
  3.  Btn_Carga.BackgroundImage = Image.FromFile(@"imagenes/pares/Imagen_001.png");
  4. }

Segun DarK_FirefoX:

Código
  1. using System.IO;
  2.  
  3.  
  4. private void Frm_CargarImagenEnBoton_001_Load(object sender, EventArgs e)
  5. {
  6.  FileStream file = new FileStream(@"imagenes/pares/Imagen_001.png", FileMode.Open);
  7.  Image toLoad = Image.FromStream(file);
  8.  Btn_Carga.Image = toLoad;
  9. }


Aqui esta el proyecto: https://www.dropbox.com/s/y6kss7wy2vhrr9r/C_Sharp_2013%28Forms%29-CargarImagenEnBoton_001.rar?dl=0 (https://www.dropbox.com/s/y6kss7wy2vhrr9r/C_Sharp_2013%28Forms%29-CargarImagenEnBoton_001.rar?dl=0)

Ahora mi consulta es ¿Cual es la diferencia entre estos dos formas y en que caso se usa uno u otro?

Gracias


 
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)


Título: Re: Cargar Imagen en botones mediante codigo en C# (Windows Form)
Publicado por: DarK_FirefoX en 10 Abril 2015, 01:12 am
Te recomiendo que te vayas a la documentación de VS (MSDN)

Pero te puedo decir que BackgroundImage como su nombre sugiere es una imagen que se le asigna de fondo al botón.

La propiedad Image es una imagen que se le puede asignar al contenido del botón. Tiene propiedades que la modifican como .ImageAlign, .ImageIndex, .ImageKey.

Ahora, tambien utilicé la clase FileStream, que no solo se utiliza para cargar una imagen, sino cualquier tipo de archivo, podías haber hecho también

Código
  1. Btn_Carga.Image = Image.FromFile(@"imagenes/pares/Imagen_001.png");

Nota: A veces utilizo la clase FileStream como intermediaria por si necesito utilizar ese archivo en cualquier otra operación.

En fin, si quieres ver bien las diferencias ve a la MSDN.

Bueno haberte ayudado! Si tienes otra duda, solo pregunta ;)


Título: Re: Cargar Imagen en botones mediante codigo en C# (Windows Form)
Publicado por: elg.system.32 en 10 Abril 2015, 01:52 am
Te recomiendo que te vayas a la documentación de VS (MSDN)

Pero te puedo decir que BackgroundImage como su nombre sugiere es una imagen que se le asigna de fondo al botón.

La propiedad Image es una imagen que se le puede asignar al contenido del botón. Tiene propiedades que la modifican como .ImageAlign, .ImageIndex, .ImageKey.

Ahora, tambien utilicé la clase FileStream, que no solo se utiliza para cargar una imagen, sino cualquier tipo de archivo, podías haber hecho también

Código
  1. Btn_Carga.Image = Image.FromFile(@"imagenes/pares/Imagen_001.png");

Nota: A veces utilizo la clase FileStream como intermediaria por si necesito utilizar ese archivo en cualquier otra operación.

En fin, si quieres ver bien las diferencias ve a la MSDN.

Bueno haberte ayudado! Si tienes otra duda, solo pregunta ;)

Gracias por la sugerencia, lo tomare en cuenta.


Título: Re: Cargar Imagen en botones mediante codigo en C# (Windows Form)
Publicado por: MAlexRM en 19 Enero 2018, 05:58 am
Muchas gracias, salió perfecto!!
18-01-18

Dos formas, una como dice ivancea96:

Código
  1. button.BackgroundImage = Image.FromFile(@"rutaImagen.jpg");

Otra:

Código
  1. FileStream file = new FileStream("rutaImagen.jpg", FileMode.Open);
  2. Image toLoad = Image.FromStream(file);
  3. button.Image = toLoad;
  4.  

Mod: Clase FileStream dentro de System.IO;

Salu2s