Programación Específica > Allegro
Como abrir una imagen
(1/1)
trio09:
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
mil gracias
JuanK:
para hacer videojuegos y software multimedia
como? con lenguaje c y assembler.. y algo de directx en la version para win32
trio09:
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
piyey:
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 --- /* Para probar este ejemplo te recomiendo que inicies grafica con 256 colores, si tienes alguna duda escribeme a: piyeysomarriba@hotmail.com o bien visita mi pagina web en: piyey.webcindario.com (Por ahora esta en construccion)*/ #include <dos.h>#include <mem.h>#include <stdlib.h>#include <conio.h>#include <stdio.h>#include <graphics.h> typedef struct{ int r,g,b;}MIPALETA; #pragma option -w-void cargaPCX(int x,int y,char *archivo,int desp){ // Variables utilizadas: FILE *pf; char cabecera[128]; char fabricante, version, codificado, bpp; int xm, ym, xM, yM, resh, resv; char planos, bpl, tpaleta; unsigned seg; long tamanyo; char valor; int i, j; unsigned char codigo; unsigned char salir; MIPALETA paleta[256]; char longitud; // Abrimos el archivo y leemos la paleta: pf=fopen(archivo,"rb"); fseek (pf, 0, SEEK_END); tamanyo = ftell (pf); fseek (pf, tamanyo-769, SEEK_SET); valor = getc(pf); if (valor == 0xC) { outportb(0x3c8, 0);// setea la paleta de colores for(i = 0; i < 256; i++) { outportb(0x3c9, getc(pf)/4); outportb(0x3c9, getc(pf)/4); outportb(0x3c9, getc(pf)/4); } } rewind(pf); fread (cabecera, sizeof(char), 128, pf); /* leo del tir¢n la cabecera */ fabricante = cabecera[0]; version = cabecera[1]; codificado = cabecera[2]; bpp = cabecera[3]; seg = FP_SEG (cabecera); movedata (seg, FP_OFF(&cabecera[4]), FP_SEG(&xm), FP_OFF(&xm), 2); movedata (seg, FP_OFF(&cabecera[6]), FP_SEG(&ym), FP_OFF(&ym), 2); movedata (seg, FP_OFF(&cabecera[8]), FP_SEG(&xM), FP_OFF(&xM), 2); movedata (seg, FP_OFF(&cabecera[10]), FP_SEG(&yM), FP_OFF(&yM), 2); movedata (seg, FP_OFF(&cabecera[12]), FP_SEG(&resh), FP_OFF(&resh), 2); movedata (seg, FP_OFF(&cabecera[14]), FP_SEG(&resv), FP_OFF(&resv), 2); planos = cabecera[65]; movedata (FP_SEG(cabecera), FP_OFF(&cabecera[66]), FP_SEG(&bpl), FP_OFF(&bpl), 2); movedata (FP_SEG(cabecera), FP_OFF(&cabecera[68]), FP_SEG(&tpaleta), FP_OFF(&tpaleta), 2); setviewport(x,y,getmaxx()-1,getmaxy()-1,1); x=0,y=0; salir=0; while (!salir) { fread (&codigo, sizeof(char), 1, pf); if (codigo >= 192) { longitud = (codigo & 63); fread (&codigo, sizeof(char), 1, pf); } else longitud = 1; for (i = longitud; i >= 1; i--) { // Se supone puntero_pcx definido y con su memoria reservada y todo. // pinta_punto(x,y,codigo,puntero_pcx); putpixel(x,y,codigo); x++; if (x > xM - xm + desp) { x = xm; y++; if (y > yM - ym) salir = 1; } } } setviewport(0,0,getmaxx()-1,getmaxy()-1,1);}#pragma option -w int main(void){ int gdriver = DETECT, gmode, errorcode; // Sustituye esta parte del codigo para iniciar modo grafico // con 256 colores si quieres colocar // una imagen con 256 colores... initgraph(&gdriver, &gmode, "C:\\TC\\BGI"); errorcode = graphresult(); if (errorcode != grOk) { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); } setfillstyle(1,7); bar(0,0,getmaxx()-1,getmaxy()-1); //Deben estar las imagenes en la ubicacion correcta if(getmaxx()+1==640&&getmaxy()+1==480) { cargaPCX(0,0,"Logo.pcx",0); } if(getmaxx()+1==800&&getmaxy()+1==600) { cargaPCX(0,0,"Logo8x6.pcx",0); } getch(); closegraph(); return 0;}
Espero te sea de utilidad... otro dia que tenga a mano la de cargar BMP con gusto te lo paso...
See you soon!!!
Piyey
Navegación
Ir a la versión completa