Autor
|
Tema: Cargar Imagen en botones mediante codigo en C# (Windows Form) (Leído 24,232 veces)
|
elg.system.32
Desconectado
Mensajes: 6
MundoELG
|
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.Agregué una carpeta denominado "imagenes" dentro la solucion o proyecto.En dicha carpeta "imagenes" tengo varias imagenes (Imagen_001, Imagen_002, Imagen_003, Imagen_004, Imagen_005 y Imagen_006).De momento cuando ejecuto el programa me sale asi: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.
|
|
« Última modificación: 9 Abril 2015, 22:43 pm por elg.system.32 »
|
En línea
|
Lo que no te mata, te hace mas fuerte
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Algo como: button.BackgroundImage = Image.FromFile(@"imagenes/img.jpg");
|
|
|
En línea
|
|
|
|
DarK_FirefoX
Desconectado
Mensajes: 1.263
Be the change you wanna see in te world
|
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
|
|
|
En línea
|
|
|
|
elg.system.32
Desconectado
Mensajes: 6
MundoELG
|
Primero agradecer por las respuestas y lo intentare de ambas formas luego indico como me va.
Gracias.
|
|
|
En línea
|
Lo que no te mata, te hace mas fuerte
|
|
|
elg.system.32
Desconectado
Mensajes: 6
MundoELG
|
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.
|
|
« Última modificación: 9 Abril 2015, 23:09 pm por elg.system.32 »
|
En línea
|
Lo que no te mata, te hace mas fuerte
|
|
|
Eleкtro
Ex-Staff
Conectado
Mensajes: 9.878
|
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
|
|
|
En línea
|
|
|
|
DarK_FirefoX
Desconectado
Mensajes: 1.263
Be the change you wanna see in te world
|
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
|
|
|
En línea
|
|
|
|
elg.system.32
Desconectado
Mensajes: 6
MundoELG
|
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 Estudioy este la agrego en esta parte de la solucion o programa: por esta razon esperaba cargar las imagenes de esta carpeta.
Saludos
|
|
|
En línea
|
Lo que no te mata, te hace mas fuerte
|
|
|
Eleкtro
Ex-Staff
Conectado
Mensajes: 9.878
|
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í: 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
|
|
« Última modificación: 9 Abril 2015, 23:40 pm por Eleкtro »
|
En línea
|
|
|
|
elg.system.32
Desconectado
Mensajes: 6
MundoELG
|
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
Ahora mi consulta es ¿Cual es la diferencia entre estos dos formas y en que caso se usa uno u otro?
Gracias
|
|
« Última modificación: 9 Abril 2015, 23:51 pm por elg.system.32 »
|
En línea
|
Lo que no te mata, te hace mas fuerte
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
botones con diferentes funciones en un form
PHP
|
PepiX
|
2
|
2,905
|
1 Diciembre 2006, 14:54 pm
por PepiX
|
|
|
Un form, 2 botones, y 2 operaciones diferentes
PHP
|
Zeroql
|
2
|
9,952
|
14 Junio 2011, 18:01 pm
por Devilboy.Devil
|
|
|
Ayuda con este codigo. Cargar pagina en div mediante ajax.
Desarrollo Web
|
70N1
|
0
|
2,285
|
28 Junio 2013, 16:01 pm
por 70N1
|
|
|
cargar form de imagen con ajax
Desarrollo Web
|
kakashi20
|
2
|
1,965
|
9 Octubre 2014, 04:44 am
por JorgeEMX
|
|
|
MOVIDO: Cargar Imagen en botones mediante codigo en C# (Windows Form)
Programación General
|
Eleкtro
|
0
|
1,839
|
9 Abril 2015, 21:49 pm
por Eleкtro
|
|