Está en la página 1de 6

CONCEPTOS BSICOS DE GRAFICACIN EN C++

Bruno Lpez Takeyas


Instituto Tecnolgico de Nuevo Laredo
Reforma Sur 2007, C.P. 88250, Nuevo Laredo, Tamps. Mxico
http://www.itnuevolaredo.edu.mx/takeyas
E-mail: takeyas@itnuevolaredo.edu.mx

Resumen: En numerosas ocasiones los 1.2 Inicializar el monitor en modo grfico


estudiantes requieren representar grficamente el Para habilitar el monitor en modo grfico y
comportamiento de modelos matemticos, utilizar sus pxeles y funciones de grficos, es
estadsticos, de investigacin de operaciones, etc. necesario incluir el encabezado #include
mediante programas computacionales diseados <graphics.h> que contiene las declaraciones
a la medida sin necesidad de apoyarse en y funciones relacionadas con graficacin e
paquetes de cmputo comerciales. Por esto, se inicializar el monitor en modo grfico y utilizar
presentan las siguientes consideraciones bsicas sus pxeles con la funcin initgraph().
de graficacin en lenguaje C++, Dicha funcin requiere las siguientes
Palabras claves: Graficacin, resolucin, declaraciones:
pxel, lenguaje C++, monitor.
int monitor=DETECT;
// Variable para detectar el tipo
1 INTRODUCCIN // de monitor
Tal como un artista selecciona diversos medios int modo;
para representar sus pinturas, los programadores, // Modo de operacin del monitor
escogen un modo y formato especial para
habilitar el monitor para graficar. Cada modo tambin se puede declarar e inicializar con un
proporciona ciertas caractersticas como la tipo de monitor especfico como:
resolucin, nmero posible de colores, modo
texto o modo grfico y otros elementos donde int monitor=VGA;
cada modo requiere de cierto equipo (hardware). // Variable para usar el monitor
// tipo VGA
1.1 Resolucin int modo=VGAHI;
Las imgenes grficas mostradas en un monitor // Usar el monitor VGA a su
de computadora se componen de pequeos puntos //maxima resolucin
llamados pxeles, los cuales estn distribuidos en Fig. 1. Declaracin de variables para habilitar el monitor en
la pantalla en filas; existe una cantidad especfica modo grfico
de filas y cada fila tiene una cantidad especfica
de pxeles. La cantidad de pxeles usada en la Para terminar de usar el monitor en modo
pantalla se conoce como resolucin. Cada modo grfico y devolverlo a su modo de texto normal
grfico tiene una resolucin particular. se usa la funcin closegraph().

1
1.2.1 La funcin initgraph() 2 LNEAS, FIGURAS
Una vez declaradas las variables monitor y GEOMTRICAS, COLORES Y
modo que controlarn la resolucin identificando RELLENOS
el tipo de pantalla o monitor y su modo de Sera muy difcil considerar todas las opciones
operacin respectivamente, se utiliza la funcin posibles de todas las funciones de graficacin; sin
initgraph() para habilitar el monitor embargo, en este artculo se tratan los temas
seleccionado en modo grfico. La funcin fundamentales para implementarlas. Bsicamente
initgraph() tiene 3 parmetros o argumentos: se mostrar que antes de utilizar un color, un tipo
1) La variable que identifica el monitor. de lnea, de relleno, o cualquier funcin de
2) El modo de operacin grfico. definicin del tipo de trazo, etc. es necesario
3) Subdirectorio que contiene los definirlo. A continuacin se muestran las
controladores de los monitores (archivos funciones bsicas de graficacin.
con extensin BGI) y los archivos con los
tipos de letra (extensin CHR) como lo 2.1 La funcin line()
muestra la Fig.2. Esta funcin se utiliza para dibujar una lnea
entre 2 puntos. Para ello, la funcin requiere 4
int monitor=DETECT, modo; parmetros que representan las coordenadas (en
initgraph(&monitor,&modo,"\\tc\\bgi"); pixeles) de los dos puntos que se desea unir
Fig. 2. La funcin initgraph(). mediante una lnea recta. La Fig. 4 muestra un
ejemplo que une los puntos 50,100 y 300,200
Si se desea usar el directorio actual por defecto, (columna, rengln respectivamente).
se utiliza la funcin initgraph() como lo indica
la Fig. 3. line(50,100,300,200);

int monitor=DETECT, modo; Fig. 4. La funcin line().


initgraph(&monitor,&modo,"");
2.2 La funcin setlinestyle()
Fig. 3. La funcin initgraph() usando el subdirectorio actual
por defecto. Esta funcin se utiliza para determinar el tipo
de lnea o trazo que se desea. Se pueden utilizar
trazos con lnea continua, lnea punteada, lnea
1.3 Uso de coordenadas interrumpida, o un patrn de lnea definido por el
Una vez que se inicializa el monitor en modo usuario. Esta funcin requiere 3 argumentos:
grfico, las coordenadas tienen al pxel como 1) Tipo de lnea: Puede ser SOLID_LINE,
unidad de medida. La funcin getmaxx() DOTTED_LINE, CENTER_LINE,
calcula la cantidad de pxeles por rengln y la DASHED_LINE o USERBIT_LINE.
funcin getmaxy() calcula la cantidad de 2) Patrn: Este argumento regularmente es
ignorado (excepto cuando se trata de un tipo
renglones de la pantalla.
de lnea definido por el usuario).
Las funciones de grficos tienen como estndar
3) Ancho de lnea: Define la amplitud del
el orden de manejo de coordenadas como
trazo.
columna, rengln; es decir, primero se anota la
La Fig. 5 muestra un ejemplo que une los puntos
columna y despus el rengln para posicionarse
50,100 y 300,200 con una lnea punteada.
en dicha coordenada.
Cabe destacar que el conteo de columnas y setlinestyle(DOTTED_LINE,0, NORM_WIDTH);
renglones inicia partiendo de la esquina superior line(50,100,300,200);
izquierda del monitor.
Fig. 5. La funcin setlinestyle().
2
2.3 La funcin circle() DARKGRAY 8
Esta funcin dibuja un crculo y requiere 3 LIGHTBLUE 9
argumentos: LIGHTGREEN 10
1) Coordenada de la columna del centro (en LIGHTCYAN 11
pixeles). LIGHTRED 12
2) Coordenada del rengln del centro (en LIGHTMAGENTA 13
pixeles). YELLOW 14
3) Radio del crculo (en pixeles). WHITE 15
La Fig. 6 dibuja un crculo cuyo centro se Fig. 8. Tabla de colores y sus valores.
encuentra en el punto 300,150 y su radio es de 27
pixeles. La Fig. 9 muestra un ejemplo del uso de la
funcin setcolor() donde se dibuja un circulo de
color rojo y despus un rectangulo de color azul.
circle(300,150,27);
setcolor(RED);
Fig. 6. La funcin circle(). circle(300,150,27);

2.4 La funcin rectangle() setcolor(BLUE);


Esta funcin dibuja un rectngulo indicando las rectangle(50,100,400,250);
coordenadas de las esquinas superior izquierda e
Fig. 9. Uso de la funcin setcolor().
inferior derecha respectivamente. La Fig. 7
muestra un ejemplo de una funcin que dibuja un
rectngulo desde el punto 50,100 hasta el punto
2.6 Definiendo el tipo de relleno de una
400,250.
figura con la funcin setfillstyle()
rectangle(50,100,400,250); Si se desea rellenar una figura, es necesario
definir previamente el patrn y color del relleno.
Fig. 7. La funcin rectangle(). La Fig. 10 muestra los patrones de relleno
disponibles.
2.5 La funcin setcolor() PATRN DESCRIPCIN
Se utiliza esta funcin para definir el color de EMPTY_FILL 0 Color del fondo
los trazos siguientes; es decir, antes de dibujar un SOLID_FILL 1 Relleno slido con
trazo de un color especfico, ste debe definirse. el color
Esta funcin slo tiene un argumento que determinado
representa el cdigo del color deseado. P. ejem. LINE_FILL 2 Relleno con lnea (-
BLACK, RED, BLUE, GREEN, YELLOW, etc. --)
o bien su nmero entero correspondiente. La Fig. LTSLASH_FILL 3 Relleno con ///
8 muestra la tabla de colores y sus respectivos lneas de ancho
valores. normal
BLACK 0 SLASH_FILL 4 Relleno con ///
BLUE 1 lneas
GREEN 2 BKSLASH_FILL 5 Relleno con \\\
CYAN 3 lneas
RED 4 LTBKSLASH_FILL 6 Relleno con \\\
MAGENTA 5 lneas de ancho
BROWN 6 normal
LIGHTGRAY 7 HATCH_FILL 7 Relleno de lneas

3
cruzadas ligeras
XHATCH_FILL 8
Relleno de lneas setcolor(RED);
circle(300,150,27);
cruzadas gruesas
INTERLEAVE_FILL 9 Relleno de lneas setfillstyle(SOLID_FILL,BLUE);
WIDE_DOT_FILL 10 Relleno de puntos floodfill(300,150,RED);
espaciados
CLOSE_DOT_FILL 11 Relleno de puntos Fig. 12. Uso de la funcin floodfill().
cercanos
USER_FILL 12 Relleno definido
por el usuario 3 CMO MOSTRAR MENSAJES
Fig. 10. Patrones de relleno de la funcin setfillstyle() EN MODO GRFICO
Aunque el monitor se encuentre habilitado en
Por ejemplo, si se desea definir el patrn de modo grfico, se puede combinar la colocacin
relleno de puntos cercanos de color rojo, se usa la de texto y grficas en la pantalla; sin embargo, en
funcin setfillstyle() como lo muestra la esta seccin se hace nfasis en la colocacin de
Fig. 11. mensajes en formato grfico, definiendo el tipo
de letra, direccin y tamao del mensaje deseado.
setfillstyle(CLOSE_DOT_FILL, RED);
3.1 La funcin settextstyle()
Fig. 11. Seleccin del patrn de relleno
CLOSE_DOT_FILL de color RED
Antes de mostrar un mensaje, debe
seleccionarse el tipo de letra, direccin y tamao
del mensaje mediante la funcin
2.7 La funcin floodfill() setfillstyle() la cual requiere 3
Una vez seleccionado el patrn de relleno argumentos:
mediante la funcin setfillstyle(), se 1) El tipo de letra. (Ver Fig. 13).
procede a rellenar una figura usando la funcin 2) La direccin del mensaje (horizontal o
floodfill(). Es muy importante resaltar que vertical).
3) Tamao.
la figura que se desea rellenar est
completamente cerrada, ya que esta funcin Tipo letra Valor Archivo
contiene un algoritmo que busca el contorno de la DEFAULT_FONT 0 -
figura y, en caso de encontrar una apertura, la TRIPLEX_FONT 1 TRIP.CHR
funcin extralimitar la figura y tambin rellenar SMALL_FONT 2 LITT.CHR
la parte externa de la misma. La funcin SANS_SERIF_FONT 3 SANS.CHR
GOTHIC_FONT 4 GOTH.CHR
floodfill() requiere identificar un punto que
Fig. 13. Tipos de letra.
se encuentre dentro del contorno de la figura y
necesita 3 argumentos:
1) Coordenada de la columna del punto 3.2 La funcin outtextxy()
interno de la figura. Una vez definido el tipo de letra, direccin y
2) Coordenada del rengln del punto interno tamao correspondiente, se usa la funcin
de la figura. outtextxy() para desplegar un mensaje grfico en
3) Color del borde de la figura. la pantalla. Esta funcin requiere 3 argumentos:
1) Coordenada de la columna donde se desea
El ejemplo mostrado en la Fig. 12 dibuja un mostrar el mensaje.
circulo de color ROJO y lo rellena de color 2) Coordenada del rengln.
AZUL slido. 3) Mensaje a mostrar.
La Fig. 14 muestra un ejemplo.
4
settextstyle(GOTHIC_FONT, HORIZ_DIR, 5); setcolor(WHITE); /*Establece el color
outtextxy(100,200,Tec Laredo); blanco*/
circle(100,200,30); /* Dibuja un
Fig. 14. Mostrar un mensaje grfico en la pantalla. circulo cuyo centro esta en 100,200 y de
radio=30 pixeles*/

setfillstyle(LINE_FILL,RED); /*
Establece el relleno de lineas rojas*/
4 APLICACIN TPICA floodfill(100,200,WHITE); /*Rellena el
El programa de la Fig. 15 es un claro ejemplo contorno desde 100,200 hasta encontrar
del uso de lneas, figuras geomtricas un trazo blanco*/
elementales, colores y rellenos
/* rectangle(200,100,300,200); /* Dibuja
Programa para graficar figuras un rectangulo desde 200,100 hasta
geometricas, lineas, texto, colores y 300,200*/
rellenos setfillstyle(HATCH_FILL,BLUE); /*
Establece el relleno como cuadricula*/
MiniTaller: Tecnicas avanzadas de floodfill(250,150,WHITE); /* Rellena
programacion en Lenguaje C++ el contorno desde 100,200 hasta
Instructor: M.C. Bruno Lopez Takeyas encontrar un trazo blanco*/
*/
setcolor(GREEN); /*Establece el color
#include <graphics.h> /* Encabezado con verde*/
declaraciones de graficos*/ settextstyle(GOTHIC_FONT,HORIZ_DIR,5);
#include <conio.h> /* Establece el font como Gotico
#include <stdio.h> en posicion Horizontal de tamao 5*/
outtextxy(330,100,"Gothic");
void main(void) /*Despliega el mensaje "Gothic" en
{ 330,100*/
int monitor=DETECT, modo; /*
Declaracion de tipo de monitor y modo*/ setcolor(CYAN); /*Establece el color
/* Automaticamente detecta el tipo de celeste*/
monitor*/
settextstyle(SANS_SERIF_FONT,VERT_DIR,7)
initgraph(&monitor,&modo,"\\tc\\bgi"); ;
/* Inicializa el modo grafico indicando /* Establece el font como Sanserif en
el monitor y modo utilizado*/ posicion Vertical de tamao 7*/
/* El subdirectorio \\tc\\bgi indica la outtextxy(330,200,"Sanserif");/*
ruta de localizacion de los archivos Despliega el mensaje "Sanserif" en
*.BGI (monitores) y *.CHR (tipos de 330,200*/
letras)*/
getch();
closegraph(); /* Termina el modo
gotoxy(1,23);printf("getmaxx()=%d",getma grafico (vuelve a su modo de texto
xx()); normal)*/
return;
gotoxy(1,24);printf("getmaxy()=%d",getma }
xy()); Fig. 15.- Aplicacin tpica.

setcolor(YELLOW); /* Establece el
color amarillo (de aqui en adelante los
trazos aparecen de este color*/ 5 CONCLUSIONES
line(0,0,50,50); /* Dibuja una linea Aunque existen muchas otras funciones de
desde 0,0 hasta 50,50*/
graficacin, este artculo presenta los conceptos y
funciones bsicas para iniciar la codificacin de
5
programas en C++ que permitan utilizar el
monitor en modo grfico. Aqu se muestran las
operaciones fundamentales de graficacin y se
presentan ejemplos representativos, los cuales
pueden obtenerse en el sitio
http://www.itnuevolaredo.edu.mx/takeyas o bien
solicitarse al autor escribiendo un correo
electrnico a takeyas@itnuevolaredo.edu.mx.

6 BIBLIOGRAFA

Barkakati Nabajyoti. The Waite Groups.


Turbo C Bible. Howard W. Sams & Company.
Estados Unidos. 1990.
Deitel y Deitel. C++ Cmo programar.
Segunda edicin. Pearson-Prentice Hall. Estados
Unidos. 1999.
Lafore, Robert. The Waite Groups. Turbo
C. Programming for the PC. Revised Edition.
Howard W. Sams & Company. Estados Unidos.
1990.

Lpez Takeyas, Bruno. Minitaller: Tcnicas


avanzadas de programacin en lenguaje C++.
Instituto Tecnolgico de Nuevo Laredo, Tam.
Mxico. 2003.

Schildt, Herbert. Turbo C. Programacin


avanzada. Segunda edicin, McGraw Hill.
Estados Unidos. 1990.

También podría gustarte