Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Codeblocks y cargar imagenes

Estas en el tema de Codeblocks y cargar imagenes en el foro de C/C++ en Foros del Web. Llevo unos dias desesperado porque no encuentro la manera de cargar un archivo bmp en codeblocks utilizando allegro. He estado siguiendo un tutorial y se ...
  #1 (permalink)  
Antiguo 21/04/2016, 04:26
 
Fecha de Ingreso: agosto-2008
Mensajes: 3
Antigüedad: 15 años, 7 meses
Puntos: 0
Exclamación Codeblocks y cargar imagenes

Llevo unos dias desesperado porque no encuentro la manera de cargar un archivo bmp en codeblocks utilizando allegro.

He estado siguiendo un tutorial y se supone que el codigo es igual. Al compilarlo el programa no me da error, simplemente la ventana no se me abre y se me cierra automaticamente.

Pongo el codigo:

#include <allegro.h>
#include "inicia.h"

int main()
{
inicia_allegro(800,600); //las dimensiones de la pantalla. Tiene que ser acorde con el create_bimap
inicia_audio(70,70);
install_mouse(); //para usar el raton

BITMAP *buffer = create_bitmap(800,600); //ponemos las dimensiones de la foto. Las imagenes deben ir siempre en la carpeta del proyecto
BITMAP *fondo1 = load_bitmap("YSLnuevologo.bmp",NULL); //Cargamos las imagenes del menu
BITMAP *fondoC = load_bitmap("YSLnuevologoC.bmp",NULL);
BITMAP *fondoS = load_bitmap("YSLnuevologoS.bmp",NULL);
BITMAP *cursor = load_bitmap("cursor.bmp",NULL); //imagen del cursor

bool salida = false; //para salir del bucle

while(!salida)
{
if(mouse_x>200 && mouse_x<600 && mouse_y>425 && mouse_y<483)
{
blit(fondoC,buffer,0,0,0,0,800,600); //Imprimir el fondo con la operacon blit. la imagen esta guardada en el buffer. las coordenadas es que la imagen salga desde la esquina superior izda
if(mouse_b & 1) //si se presiona el boton del mouse se ejecuta algo. el 1 corresponde al click del boton izdo y el 2 al dcho
salida = true;
}
else if(mouse_x>293 && mouse_x<513 && mouse_y>507 && mouse_y<565)
{
blit(fondoS,buffer,0,0,0,0,800,600);
if(mouse_b & 1)
salida = true;
}
else
blit(fondo1,buffer,0,0,0,0,800,600); //si no se selecciona ninguna de las dos, poner el fondo normal

masked_blit(cursor,buffer,0,0,mouse_x,mouse_y,13,2 2); //para imprimir el cursor
blit(buffer,screen,0,0,0,0,800,600);

}



//readkey();

destroy_bitmap(buffer);
return 0;
}
END_OF_MAIN();



Me encantaria dominar el cargar imagenes ya porfin. Agradeceria eternamente aquel que me ayude
  #2 (permalink)  
Antiguo 21/04/2016, 05:28
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Codeblocks y cargar imagenes

Código C:
Ver original
  1. BITMAP *buffer = create_bitmap(800,600); //ponemos las dimensiones de la  foto. Las imagenes deben ir siempre en la carpeta del proyecto
  2. BITMAP *fondo1 = load_bitmap("YSLnuevologo.bmp",NULL); //Cargamos las imagenes del menu
  3. BITMAP *fondoC = load_bitmap("YSLnuevologoC.bmp",NULL);
  4. BITMAP *fondoS = load_bitmap("YSLnuevologoS.bmp",NULL);
  5. BITMAP *cursor = load_bitmap("cursor.bmp",NULL); //imagen del cursor

¿Por qué no verificas si esos punteros son válidos? Entiendo que si load_bitmap no es capaz de cargar la imagen por la razón que sea devolverá un puntero nulo. Un posible problema en este punto sería que el directorio de trabajo de la aplicación no coincide con la ubicación de los ficheros de imagen.

Por otro lado, fíjate que tienes comentada una línea casi al final del programa... lo mismo tiene algo que ver con el hecho de que la ventana se abra y se cierre casi al mismo tiempo.

Y, para terminar, el código deberías decorarlo para que sea legible. Elige la opción que corresponda en el desplegable Highlight y pon el código dentro de las etiquetas que te aparecerán en el editor.

Un saludo
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:22.