Escolar Documentos
Profissional Documentos
Cultura Documentos
CONTROLADORES GRÁFICOS
Y LENGUAJE C
El PC compatible IBM, soporta diferentes controladores gráficos, los cuales van desde el CGA hasta el
VGA y SVGA, pasando por EGA y HERCULES. Existen varias formas y modos de programación de estos
controladores, los que pueden ser inicializados sin ningún problema por el lenguaje C. Los modos de trabajo
pueden ser alfanumérico y gráfico, ambos modos pueden programarse utilizando funciones proporcionadas por C,
interrupciones lógicas o haciendo acceso directo a los puertos de programación de la tarjeta gráfica e incluso
pueden combinarse estas alternativas. En este capítulo se revisa la forma más simple de acceso al modo gráfico,
haciendo uso de las funciones defnidas en graphics.h de Borland.
El TurboC proporciona una biblioteca para el trabajo en modo gráfico. Las funciones se encuentran
definidas en el archivo graphics.h , permiten inicializar y trabajar en modo gráfico estando en DOS, además de
una muy fácil manipulación de la tarjeta gráfica.
Funciones Descripción
_graphdriver puede tomar cualquiera de los siguientes valores definidos por la variable enum
graphics_drivers .
94 Preaparado por Juan Ignacio Huircán
Los modos de trabajo están definidos por la enumeración enum graphics_modes , las cuales se
encuentran en la siguiente tabla.
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
int gdriver = DETECT, gmode, errorcode; /* auto deteccion */
initgraph(&gdriver, &gmode, "c:\\tc\\bgi"); /* inicializa modo grafico */
errorcode = graphresult(); /* lee resultado de inicializacion */
if (errorcode != grOk) /* si ocurre error*/
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
line(0, 0, getmaxx(), getmaxy()); /* dibuja una linea */
getch(); /* espera por tecla */
closegraph();
return 0;
}
Además de las ya mencionadas, existen una gran variedad de funciones gráficas, las más comunes son:
Funciones Descripción
Funciones Descripción
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
void main(void)
{
int gdriver = VGA, gmode=VGAHI;
initgraph(&gdriver, &gmode, "c:\\tc\\bgi");
setcolor(LIGHTBLUE);
rectangle(0, 0, getmaxx(), getmaxy());
getch();
closegraph();
}
Un ejemplo clásico en el manejo gráfico es la generación de "ventanas", lo que permite realizar menús a
través de barras de selección corredizas. Por último, es posible realizar procedimiento para graficar señales.
Ej 11.3. Generación de Ventanas. Se pueden hacer en modo gráfico. La forma de hacer aparecer y desaparecer la
ventana (abrir y cerrar) es simple. Se debe almacenar el area en donde se va dibujar la ventana, luego se dibuja la
ventana y finalmente, para cerrar dicha ventana, se superpone al área almacenada previamente, sobre la ventana
dibujada.
#include <graphics.h>
#include <alloc.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
char far *dib_vent(int x1, int y1, int x2, int y2, int color_bk);
void borra_vent(int x1, int y1, char far *pvent);
void msg(int x,int y,char *mensaje, int color_msg);
void main(void)
{
char far *pvent;
int gdriver = DETECT, gmode;
initgraph(&gdriver, &gmode, "c:\\tc\\bgi"); /*inicia modo grafico */
maxx=getmaxx();maxy=getmaxy();
setcolor(LIGHTGRAY);
rectangle(0,0,maxx,maxy);
msg(100,400,"<PRESIONE UNA TECLA>",GREEN);
getch();
pvent=dib_vent(100,100, 300,200,WHITE);
msg(100,400,"<PRESIONE UNA TECLA>", YELLOW);
getch();
if(pvent!=NULL) borra_vent(100,100,pvent);
msg(100,400,"<PRESIONE UN TECLA PARA SALIR>", RED);
getch();
closegraph();
}
char far *dib_vent(int x1, int y1, int x2, int y2, int color_bk)
{
char far *pvent;
unsigned tam;
tam = imagesize( x1, y1, x2, y2);
pvent=(char far *)farmalloc(tam);
if(pvent!=NULL)
{
getimage(x1, y1, x2, y2, pvent);
setfillstyle(1,color_bk);
bar(x1,y1,x2,y2);
setfillstyle(1,LIGHTBLUE);
bar(x1+1,y1+1,x2-1,y1+15) ;
}
return(pvent);
}