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:
Algo como:
button.BackgroundImage = Image.FromFile(@"imagenes/img.jpg");
Dos formas, una como dice ivancea96:
button.BackgroundImage = Image.FromFile(@"rutaImagen.jpg");
Otra:
FileStream file = new FileStream("rutaImagen.jpg", FileMode.Open);
Image toLoad = Image.FromStream(file);
button.Image = toLoad;
Mod: Clase FileStream dentro de System.IO;
Salu2s
Primero agradecer por las respuestas y lo intentare de ambas formas luego indico como me va.
Gracias.
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)
Hola de nuevo.
coloque este código en el evento load del formulario segun me indicaron:
Segun ivancea96:
private void Frm_CargarImagenEnBoton_001_Load(object sender, EventArgs e)
{
Btn_Carga.BackgroundImage = Image.FromFile(@"imagenes/Imagen_001.png");
}
Segun DarK_FirefoX:
using System.IO;
private void Frm_CargarImagenEnBoton_001_Load(object sender, EventArgs e)
{
FileStream file = new FileStream(@"imagenes/Imagen_001.png", FileMode.Open);
Image toLoad = Image.FromStream(file);
Btn_Carga.Image = toLoad;
}
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. :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-( :-(
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
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
Cita de: 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
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
Cita de: elg.system.32 en 9 Abril 2015, 23:05 PMAgregue 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.
Cita de: elg.system.32 en 9 Abril 2015, 23:05 PMEs 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í:
Directorio raíz del proyecto
El proyecto que compilas se encuentra aquí:
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":
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
Cita de: Eleкtro en 9 Abril 2015, 23:21 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:private void Frm_CargarImagenEnBoton_001_Load(object sender, EventArgs e)
{
Btn_Carga.BackgroundImage = Image.FromFile(@"imagenes/pares/Imagen_001.png");
}
Segun DarK_FirefoX:using System.IO;
private void Frm_CargarImagenEnBoton_001_Load(object sender, EventArgs e)
{
FileStream file = new FileStream(@"imagenes/pares/Imagen_001.png", FileMode.Open);
Image toLoad = Image.FromStream(file);
Btn_Carga.Image = toLoad;
}
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 ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)
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
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 ;)
Cita de: 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
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.
Muchas gracias, salió perfecto!!
18-01-18
Cita de: DarK_FirefoX en 9 Abril 2015, 21:29 PM
Dos formas, una como dice ivancea96:
button.BackgroundImage = Image.FromFile(@"rutaImagen.jpg");
Otra:
FileStream file = new FileStream("rutaImagen.jpg", FileMode.Open);
Image toLoad = Image.FromStream(file);
button.Image = toLoad;
Mod: Clase FileStream dentro de System.IO;
Salu2s