SoloCodigo

Programación Específica => Programación de Videojuegos => Allegro => Mensaje iniciado por: trio09 en Viernes 7 de Mayo de 2004, 22:52

Título: Como abrir una imagen
Publicado por: trio09 en Viernes 7 de Mayo de 2004, 22:52
Hola disculpen, mieren me llamo Jaime Ortega , soy de Cd,Mante,Mexico

y pues tengo duda sobre que es el ALLEGRO, me interesaria saber, si no es mucha molesta explicarme verbemente para que funciona y como, aunque mi inquietud en este momento es saber como pasar una imagen bmp o jpg a borland c++ en codigo fuente para que al ejecutar el programa salga la imgen en el ejecutable, si me pueden explicar eso, les estaria muy agradecido, soy estudiante de INGENIERIA EN SISTEMAS y pues curso 2do y me serviria de mucho su ayuda
gracias, por favor responderme a a2033520297@uat.edu.mx (http://mailto:a2033520297@uat.edu.mx)
mil gracias
Título: Re: Como abrir una imagen
Publicado por: JuanK en Sábado 8 de Mayo de 2004, 02:04
para hacer videojuegos y software multimedia
como? con lenguaje c y assembler.. y algo de directx en la version para win32
Título: Re: Como abrir una imagen
Publicado por: trio09 en Martes 11 de Mayo de 2004, 06:07
lo unico que quiero hacer es pasar una imagen de bmp a borlandc, en windows,
usando el cont vga en modo 2, ya que solo es de 16 colores,, ncesito de un programa, para hacer eso, o siemplemete un comando, y si es asi cual es?
gracias
Título: Re: Como abrir una imagen
Publicado por: piyey en Viernes 20 de Agosto de 2004, 04:10
Hola trio09, estoy leyendo tu mensaje en la universidad donde estudio, por tal razon no tengo a mano la funcion de cargar un bmp en c, pero si tengo la de cargar un archivo PCX. Si quieres probarlo aqui te lo pongo...


Código: Text
  1.  
  2. /*
  3.     Para probar este ejemplo te recomiendo que inicies grafica con
  4.     256 colores, si tienes alguna duda escribeme a:
  5.  
  6.         piyeysomarriba@hotmail.com
  7.  
  8.     o bien visita mi pagina web en:
  9.  
  10.         piyey.webcindario.com (Por ahora esta en construccion)
  11. */
  12.  
  13. #include <dos.h>
  14. #include <mem.h>
  15. #include <stdlib.h>
  16. #include <conio.h>
  17. #include <stdio.h>
  18. #include <graphics.h>
  19.  
  20. typedef struct
  21. { int r,g,b;}MIPALETA;
  22.  
  23. #pragma option -w-
  24. void cargaPCX(int x,int y,char *archivo,int desp)
  25. {
  26.   // Variables utilizadas:
  27.  
  28.   FILE *pf;
  29.   char cabecera[128];
  30.   char fabricante, version, codificado, bpp;
  31.   int xm, ym, xM, yM, resh, resv;
  32.   char planos, bpl, tpaleta;
  33.   unsigned seg;
  34.   long tamanyo;
  35.   char valor;
  36.   int i, j;
  37.   unsigned char codigo;
  38.   unsigned char salir;
  39.   MIPALETA paleta[256];
  40.   char longitud;
  41.  
  42.   // Abrimos el archivo y leemos la paleta:
  43.   pf=fopen(archivo,"rb");
  44.   fseek (pf, 0, SEEK_END);
  45.   tamanyo = ftell (pf);
  46.   fseek (pf, tamanyo-769, SEEK_SET);
  47.   valor = getc(pf);
  48.   if (valor == 0xC)
  49.   { outportb(0x3c8, 0);// setea la paleta de colores
  50.     for(i = 0; i < 256; i++)
  51.     { outportb(0x3c9, getc(pf)/4);
  52.       outportb(0x3c9, getc(pf)/4);
  53.       outportb(0x3c9, getc(pf)/4);
  54.     }
  55.   }
  56.  
  57.   rewind(pf);
  58.   fread (cabecera, sizeof(char), 128, pf); /* leo del tir¢n la cabecera */
  59.   fabricante = cabecera[0];
  60.   version = cabecera[1];
  61.   codificado = cabecera[2];
  62.   bpp = cabecera[3];
  63.   seg = FP_SEG (cabecera);
  64.   movedata (seg, FP_OFF(&cabecera[4]), FP_SEG(&xm), FP_OFF(&xm), 2);
  65.   movedata (seg, FP_OFF(&cabecera[6]), FP_SEG(&ym), FP_OFF(&ym), 2);
  66.   movedata (seg, FP_OFF(&cabecera[8]), FP_SEG(&xM), FP_OFF(&xM), 2);
  67.   movedata (seg, FP_OFF(&cabecera[10]), FP_SEG(&yM), FP_OFF(&yM), 2);
  68.   movedata (seg, FP_OFF(&cabecera[12]), FP_SEG(&resh), FP_OFF(&resh), 2);
  69.   movedata (seg, FP_OFF(&cabecera[14]), FP_SEG(&resv), FP_OFF(&resv), 2);
  70.   planos = cabecera[65];
  71.   movedata (FP_SEG(cabecera), FP_OFF(&cabecera[66]), FP_SEG(&bpl), FP_OFF(&bpl), 2);
  72.   movedata (FP_SEG(cabecera), FP_OFF(&cabecera[68]), FP_SEG(&tpaleta), FP_OFF(&tpaleta), 2);
  73.  
  74.   setviewport(x,y,getmaxx()-1,getmaxy()-1,1);
  75.   x=0,y=0;
  76.  
  77.   salir=0;
  78.   while (!salir)
  79.   { fread (&codigo, sizeof(char), 1, pf);
  80.     if (codigo >= 192)
  81.     { longitud = (codigo & 63);
  82.       fread (&codigo, sizeof(char), 1, pf);
  83.     }
  84.     else
  85.      longitud = 1;
  86.  
  87.     for (i = longitud; i >= 1; i--)
  88.     { // Se supone puntero_pcx definido y con su memoria reservada y todo.
  89.       // pinta_punto(x,y,codigo,puntero_pcx);
  90.       putpixel(x,y,codigo);
  91.  
  92.       x++;
  93.       if (x > xM - xm + desp)
  94.       { x = xm;
  95.   y++;
  96.        if (y > yM - ym)
  97.    salir = 1;
  98.       }
  99.     }
  100.   }
  101.   setviewport(0,0,getmaxx()-1,getmaxy()-1,1);
  102. }
  103. #pragma option -w
  104.  
  105. int main(void)
  106. {
  107.    int gdriver = DETECT, gmode, errorcode;
  108.  
  109.    // Sustituye esta parte del codigo para iniciar modo grafico
  110.    // con 256 colores si quieres colocar
  111.    // una imagen con 256 colores...
  112.  
  113.    initgraph(&gdriver, &gmode, "C:\\TC\\BGI");
  114.    errorcode = graphresult();
  115.    if (errorcode != grOk)
  116.    {
  117.       printf("Graphics error: %s\n", grapherrormsg(errorcode));
  118.       printf("Press any key to halt:");
  119.       getch();
  120.       exit(1);
  121.    }
  122.  
  123.    setfillstyle(1,7);
  124.    bar(0,0,getmaxx()-1,getmaxy()-1);
  125.  
  126. //Deben estar las imagenes en la ubicacion correcta
  127.  
  128.    if(getmaxx()+1==640&&getmaxy()+1==480)
  129.    { cargaPCX(0,0,"Logo.pcx",0); }
  130.    if(getmaxx()+1==800&&getmaxy()+1==600)
  131.    { cargaPCX(0,0,"Logo8x6.pcx",0); }
  132.  
  133.    getch();
  134.    closegraph();
  135.    return 0;
  136. }
  137.  
  138.  


Espero te sea de utilidad... otro dia que tenga a mano la de cargar BMP con gusto te lo paso...


See you soon!!!

Piyey