0% encontró este documento útil (0 votos)
24 vistas6 páginas

Apendice C

El documento detalla el manejo gráfico en C y C++ utilizando la librería graphics.h, que incluye funciones para dibujar formas básicas y avanzadas. Se proporciona una lista extensa de funciones gráficas, su sintaxis y ejemplos de uso, así como errores comunes al compilar programas gráficos. Finalmente, se incluye un ejemplo de código que inicializa el modo gráfico y dibuja una línea en la pantalla.

Cargado por

EmanuelUNI
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
24 vistas6 páginas

Apendice C

El documento detalla el manejo gráfico en C y C++ utilizando la librería graphics.h, que incluye funciones para dibujar formas básicas y avanzadas. Se proporciona una lista extensa de funciones gráficas, su sintaxis y ejemplos de uso, así como errores comunes al compilar programas gráficos. Finalmente, se incluye un ejemplo de código que inicializa el modo gráfico y dibuja una línea en la pantalla.

Cargado por

EmanuelUNI
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

APUNTES DE LA MATERIA PROGRAMACION I

Profesor Titular: Ing. Marcelo Daniel Camargo

Manejo de gráfico en C
El C y C++ de Borland ofrece un extenso conjunto de rutinas gráficas. Los prototipos para
las funciones gráficas están en graphics.h. Estas funciones contienen primitivas(1) para
dibujar pixels(2), líneas, rectángulos, arcos, círculos y elipses. (Se denominan primitivas ya
que únicamente dibujan formas básicas.) Muchas funciones gráficas avanzadas incluyen
rutinas para dibujar diagramas de barras y sectores de dos y tres dimensiones. Las
funciones gráficas adicionales permiten al usuario establecer el modo gráfico, seleccionar
la ventana(3), cambiar la razón del aspecto(4), el tamaño de la imagen, rellenar objetos con
colores y patrones, etc. La ventana se refiere a la parte de la pantalla que está activa. Por
omisión, el tamaño de la ventana y la pantalla son idénticos.

Examine esta extensa lista de funciones gráficas:

arc Dibuja un arco circular.


bar Dibuja una barra en dos dimensiones.
bar3d Dibuja una barra en tres dimensiones.
circle Dibuja un círculo.
cleardevice Borra la pantalla gráfica.
clearviewport Borra la ventana activa.
closegraph Cierra el sistema gráfico.
detectgraph Determina el controlador y el modo gráfico del hardware.
drawpoly Dibuja la silueta de un polígono.
ellipse Dibuja un arco elíptico.
fillellipse Dibuja y rellena una elipse.
fillpoiy Dibuja y rellena un polígono.
floodfill Rellena el borde de un área.
getarecoords Fija las coordenadas de la última llamada al arco.
getaspectratio Establece la relación de aspecto del modo gráfico.
getbkcolor Devuelve el color de fondo activo.
getcolor Devuelve el color en el que se dibuja.
getdefaultpalette Devuelve el valor del puntero a la paleta por omisión.
getdrivername Devuelve el puntero a cadena que contiene nombre del controlador gráfico en uso.
getfillpattern Copia el patrón de relleno definido por el usuario en la memoria.
getfillsettings Devuelve información sobre el patrón de relleno y el color.
getgraphmode Devuelve el modo gráfico en uso.
getimage Guarda la imagen especificada en memoria.
getilinesettings Devuelve el estilo de la línea, el patrón y el grosor.
getmaxcolor Devuelve el máximo valor que puede ser enviado .
setmaxmode Devuelve el máximo valor para el modo del controlador en uso.
getmaxx Devuelve el valor máximo de la coordenada x de la pantalla (en pixels).

1
Se denominan primitivas, porque únicamente dibujan formas básicas
2
El píxel es cada uno de los puntos (luminosos y/o coloreados) que componen la matriz de la pantalla gráfica.
3
Ventana se refiere a la parte de la pantalla que está activa. Esta puede ser la totalidad de la pantalla o solo un sector.
4
Por ej. si un círculo, se muestra ovalado en cierto modo, se puede corregir mediante setaspectratio.
-1-
APUNTES DE LA MATERIA PROGRAMACION I
Profesor Titular: Ing. Marcelo Daniel Camargo

getmaxy Devuelve el valor máximo de la coordenada y de la pantalla (en pixels).


getmodename Devuelve el puntero a la cadena que contiene el nombre del modo gráfico.
getmoderange Devuelve el rango de modos para el controlador gráfico.
getpalette Devuelve información sobre la paleta en uso.
getpalettesize Devuelve el número de colores visualizables de la paleta.
getpixel Devuelve el color del pixel especificado.
gettextsettings Devuelve información sobre los tipos de letras del texto gráfico.
getviewsettings Devuelve información sobre las ventanas gráficas en uso.
getx Da el valor x la posición del cursor en la pantalla.
gety Da el valor y de la posición del cursor en la pantalla.
graphdefaults lnicializa todos los gráficos a los valores por omisión.
grapherrormsg Devuelve el puntero al mensaje de error.
_graphfreemem Libera memoria previamente reservada para gráficos.
_graphgetmem Reserva memoria para los gráficos.
graphresult Devuelve el código de error de la última operación fallida.
imagesize Devuelve el número de bytes necesarios para guardar una imagen.
initgraph Inicializa el sistema gráfico.
Installuserdrive Instala un controlador suministrado por un fabricante.
installuserfont Instala el tipo de letra suministrado por el usuario.
line Dibuja una línea.
linerel Dibuja una línea dada una distancia a un punto.
lineto Dibuja una línea desde la posición del cursor hasta un punto dado.
moverel Desplaza el cursor una distancia dada.
moveto Desplaza el cursor a un punto dado.
outtext Visualiza una cadena en una ventana.
outtextxy Visualiza una cadena a partir de una posición dada.
pleslice Dibuja y rellena un sector.
putimage Visualiza una imagen en la pantalla.
putpixel Traza un pixel en el punto especificado.
rectangle Dibuja un rectángulo.
registerbgidriver Muestra al sistema el código del controlador gráfico del usuario.
registerbgfont Muestra el código del tipo de letra incluido en tiempo de enlace.
restorecrtmode Devuelve la pantalla al modo anterior al gráfico
sector Dibuja y rellena un sector elíptico.
setactivepage Fija la página activa para la salida gráfica.
setallpalete Cambia todos los colores de la paleta.
setaspectratio Cambia la relación de aspecto por omisión.
setbkcolor Cambia el color de fondo.
setcolor Cambia el color del dibujo por omisión.
setfillpattern Cambia el patrón de relleno.
setfíllstyle Cambia el estilo de relleno.
setgraphbufsize Cambia el tamaño de la memoria intermedia gráfica.
setgraphmode Fija el modo gráfico y borra la pantalla.
setlinestyle Fija la anchura y el estilo de la línea
setpalette Cambia un color de la paleta.
setrgbpalette Define los colores para el monitor IBM 8514.
settextjustify Fija la justificación del texto para gráficos.
settextstyle Fija las características del texto para gráficos.
setusercharsize Fija la anchura y la altura de los tipos de letras.
setviexport Fija el tamaño de la pantalla.
setvisualpage Fija el número de la página visualizada.
setwritemode Fija el modo de escritura para la línea del dibujo.
textheight Muestra la altura de una cadena en pixels.
textwidth Devuelve la anchura de una cadena en pixels.
-2-
APUNTES DE LA MATERIA PROGRAMACION I
Profesor Titular: Ing. Marcelo Daniel Camargo

Con este grupo de funciones podemos realizar gráficos profesionales. Sin duda, podemos
dibujar y rotular una representación gráfica de calidad de un diagrama de barras, de
sectores o una curva poligonal.

Sintaxis de llamada a las funciones gráficas


La sintaxis para cada función gráfica requiere formular y pasar los argumentos
necesarios. Examine los prototipos de cada una de las funciones gráficas; observe que
muchos argumentos son por sí mismos autoexplicativos. Podemos encontrar información
detallada en el archivo de cabecera, en la ayuda contextual de cada función en el entorno
de desarrollo y en el ejemplo incluido en el subdirectorio \BGI del Turbo C. En la mayoría
de los casos, solamente necesitaremos los prototipos de las funciones, que se muestran a
continuación, para utilizar las capacidades gráficas del sistema.
void far arc(int x,int y,int stangle,int endangle, int radius);
void far bar(int left,int top,int right,int bottom);
void far bar3d(int left,int top,int right,int bottom, int depth, int topflag);
void far circle(int x,int y,int radius);
void far cleardevice(void);
void far clearviewport(void);
void far closegraph(void);
void far detectgraph(int far *graphdriver,int far *graphmode);
void far drawpoly(int numpoints,int far *polypoints);
void far ellipse(int x,int y,int stangle,int endangle, int xradius,ínt yradius);
void far fillellipse(int x,int y,int xradius,int yradius);
void far fillpoly(int numpoints,int far *polypoints);
void far floodfill(int x,int y,int border);
void far getarecoords(struct arccoordstype far *arecoords);
void far getaspectratio(int far *xasp,int far *yasp);
int far getbkcolor(void); int far getcolor(void);
struct palettetype *far getdefaultpalette(void);
char *far getdrivername(void);
void far getfillpattern(char far *pattern);
void far getfillsettings(struct fillsettingstype far *fillinfo);
int far getgraphmode(void);
void far getimage(int left,int top,int ricjht,int bottom, void far *bitmap);
void far getlinesettings(struct linesettingstype far *lineinfo);
int far getmaxcolor(void);
int far getmaxmode(void);
int far getmaxx(void);

-3-
APUNTES DE LA MATERIA PROGRAMACION I
Profesor Titular: Ing. Marcelo Daniel Camargo

int far getmaxy(void);


char * far getmodename(int mode-number);
void far getmoderange(int graphdriver,int far *lomode, int far *himode);
void far getpalette(struct palettetype far *palette);
int far getpalettesize(void);
unsigned far getpixel(int x,int y);
void far gettextsettings(struct textsettingstype far *texttypeinfo);
void far getviewsettings(struct viewporttype far *viewport);
int far getx(void);
int far gety(void);
void far graphdefaults(void);
char * far grapherrormsg(int errorcode);
void far _graphfreemem(void far *ptr,unsigned size);
void far * far _graphget(unsigned size);
int far graphresult(void);
unsigned far imagesize(int left,int top,int right,int bottom);
void far initgraph(int far *graphdriver, int far *graphmode, char far *pathtodriver);
int far installuserdriver(char far *name,int huge (*detect)(void));
int far installuserfont(char far *name);
void far line(int xl,int yl,int x2,int y2);
void far linerel(int dx,int dy);
void far lineto(int x,int y);
void far moverel(int dx,int dy);
void far moveto(int x,int y);
void far outtext(char far *textstring);
void far outtextxy(int x,int y,char far *textstring);
void far pieslice(int x,int y,int stangle,int endangle, int radius);
void far putimage(int left,int top,void far *bitmap,int op);
void far putpixel(int x,int y,int color);
void far rectangle(int left,int top,int right,int bottom);
int registerbgidriver(void(*driver)(void));
int registerbgifont(void (*font)(void));
void far restarecrtmode(void);
void far sector(int X,int Y,int StAngle,int EndAngle, int XRadius,int YRadius);
void far setactivepage(int page);
void far setallpalette(struct palettetype far *palette);
void far setaspectratio(int xasp,int yasp);
void far setbkcolor(int color);
void far setcolor(int color);
void far setfillpattern(char far *upattern,int color);

-4-
APUNTES DE LA MATERIA PROGRAMACION I
Profesor Titular: Ing. Marcelo Daniel Camargo

void far setfillstyle(int pattern,int color);


unsigned far setgraphbufsize(unsigned bufsize);
void far setgraphmode(int mode);
void far setlinestyle(int linestyle, unsigned upattern, int thickness);
void far setpalette(int colornum,int color);
void far setrgbpalette(int colornum, int red,int green,int blue);
void far settextjustify(int horiz, int vert);
void far settextstyle(int font,int direction,int charsize);
void far setusercharsize(int multx,int divx, int multy,int divy);
void far setviewport(int left,int top,int right,int bottom,int clip);
void far setvisualpage(int page);
void far setwritemode(int mode);
int far textheight(char far *textstring);
int far textwidth(char far *textstring);

Errores comunes en la creación de programas con interface gráfica


Es común que quien intenta compilar sus primeros programas con interface gráfica,
omitan en el entorno de desarrollo, enlazar con su programa la librería gráfica. Esto se
subsana habilitando la opción “Graphics Library” del enlazador tal como se indica en el
próximo gráfico.

Otros errores comunes que suelen cometerse, son la omisión de la inclusión de la


cabecera graphis.h o del path del manejador de video, necesario para la iniciación de la
interface a través de initgraph.

-5-
APUNTES DE LA MATERIA PROGRAMACION I
Profesor Titular: Ing. Marcelo Daniel Camargo

A continuación se muestra un pequeño programa que inicia el modo gráfico y traza un


línea transversal entre el origen de la pantalla, coordenada (0,0) extremo izquierdo
superior y la coordenada máxima que permite la pantalla (getmaxx(), getmaxy()).
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <graphics.h>

main()
{
int far * gdriver;
int far * gmode;
char far * path_driver="\\LENG\\TC\\BGI";/*Doble barra inv. p/[Link]
switches*/
int errorcode;

*gdriver=DETECT;

/* initializa modo graphico */


initgraph(gdriver, gmode,path_driver);

errorcode = graphresult(); /* Devuelve código de error de la


última operación gráfica */
if (errorcode != grOk) /* occurrio un error */
{printf("Error grafico: %s\n", grapherrormsg(errorcode));
printf("Pulse alguna tecla para terminar:");
getch();
exit(1); /* devuelve código de error */
}

line(0, 0, getmaxx(), getmaxy()); /* dibuja una línea */

getch();
closegraph();
return(0);
}

-6-

También podría gustarte