CONCEPTOS BÁSICOS DE GRAFICACIÓN EN C++
Bruno López Takeyas
Instituto Tecnológico de Nuevo Laredo
Reforma Sur 2007, C.P. 88250, Nuevo Laredo, Tamps. México
http://www.itnuevolaredo.edu.mx/takeyas
E-mail:
[email protected]
1.2
Resumen: En numerosas ocasiones
los
estudiantes requieren representar gráficamente el
comportamiento
de modelos matemáticos,
estadísticos, de investigación de operaciones, etc.
mediante programas computacionales diseñados
“a la medida” sin necesidad de apoyarse en
paquetes de cómputo comerciales. Por esto, se
presentan las siguientes consideraciones básicas
de graficación en lenguaje C++,
Palabras claves: Graficación,
resolución,
píxel, lenguaje C++, monitor.
INTRODUCCIÓN
1
Tal como un artista selecciona diversos medios
para representar sus pinturas, los programadores,
escogen un modo y formato especial para
habilitar el monitor para graficar. Cada modo
proporciona ciertas características como
la
resolución, número posible de colores, modo
texto o modo gráfico y otros elementos donde
cada modo requiere de cierto equipo (hardware).
1.1 Resolución
Las imágenes gráficas mostradas en un monitor
de computadora se componen de pequeños puntos
llamados píxeles, los cuales están distribuidos en
la pantalla en filas; existe una cantidad específica
de filas y cada fila tiene una cantidad específica
de píxeles. La cantidad de píxeles usada en la
pantalla se conoce como resolución. Cada modo
gráfico tiene una resolución particular.
Inicializar el monitor en modo gráfico
Para habilitar el monitor en modo gráfico y
utilizar sus píxeles y funciones de gráficos, es
incluir el encabezado #include
necesario
<graphics.h> que contiene las declaraciones
y funciones relacionadas con graficación e
inicializar el monitor en modo gráfico y utilizar
sus píxeles con la función initgraph().
Dicha
siguientes
declaraciones:
int monitor=DETECT;
// Variable para detectar el tipo
// de monitor
int modo;
// Modo de operación del monitor
requiere
función
las
también se puede declarar e inicializar con un
tipo de monitor específico como:
int monitor=VGA;
// Variable para usar el monitor
// tipo VGA
int modo=VGAHI;
// Usar el monitor VGA a su
//maxima resolución
Fig. 1. Declaración de variables para habilitar el monitor en
modo gráfico
Para terminar de usar el monitor en modo
gráfico y devolverlo a su modo de texto normal
se usa la función closegraph().
1
1.2.1 La función initgraph()
Una vez declaradas las variables monitor y
modo que controlarán la resolución identificando
el tipo de pantalla o monitor y su modo de
operación respectivamente, se utiliza la función
initgraph()
el monitor
seleccionado en modo gráfico. La función
initgraph() tiene 3 parámetros o argumentos:
habilitar
para
1) La variable que identifica el monitor.
2) El modo de operación gráfico.
3) Subdirectorio
los
controladores de los monitores (archivos
con extensión BGI) y los archivos con los
tipos de letra (extensión CHR) como lo
muestra la Fig.2.
contiene
que
int monitor=DETECT, modo;
initgraph(&monitor,&modo,"\\tc\\bgi");
Fig. 2. La función initgraph().
Si se desea usar el directorio actual por defecto,
se utiliza la función initgraph() como lo indica
la Fig. 3.
int monitor=DETECT, modo;
initgraph(&monitor,&modo,"");
Fig. 3. La función initgraph() usando el subdirectorio actual
por defecto.
1.3 Uso de coordenadas
Una vez que se inicializa el monitor en modo
gráfico, las coordenadas tienen al píxel como
unidad de medida. La función getmaxx()
calcula la cantidad de píxeles por renglón y la
función getmaxy() calcula la cantidad de
renglones de la pantalla.
Las funciones de gráficos tienen como estándar
el orden de manejo de coordenadas como
columna, renglón; es decir, primero se anota la
columna y después el renglón para posicionarse
en dicha coordenada.
Cabe destacar que el conteo de columnas y
renglones inicia partiendo de la esquina superior
izquierda del monitor.
2 LÍNEAS, FIGURAS
GEOMÉTRICAS, COLORES Y
RELLENOS
Sería muy difícil considerar todas las opciones
posibles de todas las funciones de graficación; sin
embargo, en este artículo se tratan los temas
fundamentales para implementarlas. Básicamente
se mostrará que antes de utilizar un color, un tipo
de línea, de relleno, o cualquier función de
definición del tipo de trazo, etc. es necesario
definirlo. A continuación se muestran
las
funciones básicas de graficación.
2.1 La función line()
Esta función se utiliza para dibujar una línea
entre 2 puntos. Para ello, la función requiere 4
parámetros que representan las coordenadas (en
pixeles) de los dos puntos que se desea unir
mediante una línea recta. La Fig. 4 muestra un
ejemplo que une los puntos 50,100 y 300,200
(columna, renglón respectivamente).
line(50,100,300,200);
Fig. 4. La función line().
2.2 La función setlinestyle()
Esta función se utiliza para determinar el tipo
de línea o trazo que se desea. Se pueden utilizar
trazos con línea continua, línea punteada, línea
interrumpida, o un patrón de línea definido por el
usuario. Esta función requiere 3 argumentos:
1) Tipo de línea: Puede ser SOLID_LINE,
CENTER_LINE,
DOTTED_LINE,
DASHED_LINE o USERBIT_LINE.
2) Patrón: Este argumento regularmente es
ignorado (excepto cuando se trata de un tipo
de línea definido por el usuario).
3) Ancho de línea: Define la amplitud del
trazo.
La Fig. 5 muestra un ejemplo que une los puntos
50,100 y 300,200 con una línea punteada.
setlinestyle(DOTTED_LINE,0, NORM_WIDTH);
line(50,100,300,200);
Fig. 5. La función setlinestyle().
2
2.3 La función circle()
Esta función dibuja un círculo y requiere 3
argumentos:
1) Coordenada de la columna del centro (en
2) Coordenada del renglón del centro (en
pixeles).
pixeles).
3) Radio del círculo (en pixeles).
La Fig. 6 dibuja un círculo cuyo centro se
encuentra en el punto 300,150 y su radio es de 27
pixeles.
DARKGRAY
LIGHTBLUE
LIGHTGREEN
LIGHTCYAN
LIGHTRED
LIGHTMAGENTA
YELLOW
WHITE
8
9
10
11
12
13
14
15
circle(300,150,27);
Fig. 6. La función circle().
2.4 La función rectangle()
Esta función dibuja un rectángulo indicando las
coordenadas de las esquinas superior izquierda e
inferior derecha respectivamente. La Fig. 7
muestra un ejemplo de una función que dibuja un
rectángulo desde el punto 50,100 hasta el punto
400,250.
rectangle(50,100,400,250);
Fig. 7. La función rectangle().
2.5 La función setcolor()
Se utiliza esta función para definir el color de
los trazos siguientes; es decir, antes de dibujar un
trazo de un color específico, éste debe definirse.
Esta función sólo
tiene un argumento que
representa el código del color deseado. P. ejem.
BLACK, RED, BLUE, GREEN, YELLOW, etc.
o bien su número entero correspondiente. La Fig.
8 muestra la tabla de colores y sus respectivos
valores.
BLACK
BLUE
GREEN
CYAN
RED
MAGENTA
BROWN
LIGHTGRAY
0
1
2
3
4
5
6
7
Fig. 8. Tabla de colores y sus valores.
La Fig. 9 muestra un ejemplo del uso de la
función setcolor() donde se dibuja un circulo de
color rojo y después un rectangulo de color azul.
setcolor(RED);
circle(300,150,27);
setcolor(BLUE);
rectangle(50,100,400,250);
Fig. 9. Uso de la función setcolor().
2.6 Definiendo el tipo de relleno de una
figura con la función setfillstyle()
Si se desea rellenar una figura, es necesario
definir previamente el patrón y color del relleno.
La Fig. 10 muestra los patrones de relleno
disponibles.
PATRÓN
EMPTY_FILL
SOLID_FILL
DESCRIPCIÓN
0 Color del fondo
1 Relleno sólido con
el color
determinado
2 Relleno con línea (-
--)
3 Relleno con ///
líneas de ancho
normal
4 Relleno con ///
5 Relleno con \\\
líneas
líneas
6 Relleno con \\\
líneas de ancho
normal
7 Relleno de líneas
LINE_FILL
LTSLASH_FILL
SLASH_FILL
BKSLASH_FILL
LTBKSLASH_FILL
HATCH_FILL
3
setcolor(RED);
circle(300,150,27);
setfillstyle(SOLID_FILL,BLUE);
floodfill(300,150,RED);
Fig. 12. Uso de la función floodfill().
3 CÓMO MOSTRAR MENSAJES
EN MODO GRÁFICO
Aunque el monitor se encuentre habilitado en
modo gráfico, se puede combinar la colocación
de texto y gráficas en la pantalla; sin embargo, en
esta sección se hace énfasis en la colocación de
mensajes en formato gráfico, definiendo el tipo
de letra, dirección y tamaño del mensaje deseado.
3.1 La función settextstyle()
Antes
de mostrar
un mensaje,
debe
seleccionarse el tipo de letra, dirección y tamaño
función
del
setfillstyle()
3
argumentos:
mediante
requiere
mensaje
cual
1) El tipo de letra. (Ver Fig. 13).
2) La dirección del mensaje (horizontal o
la
la
vertical).
3) Tamaño.
Tipo letra
DEFAULT_FONT
TRIPLEX_FONT
SMALL_FONT
SANS_SERIF_FONT
GOTHIC_FONT
Valor
0
1
2
3
4
Archivo
-
TRIP.CHR
LITT.CHR
SANS.CHR
GOTH.CHR
XHATCH_FILL
cruzadas ligeras
8 Relleno de líneas
cruzadas gruesas
INTERLEAVE_FILL 9 Relleno de líneas
WIDE_DOT_FILL
10 Relleno de puntos
CLOSE_DOT_FILL
USER_FILL
espaciados
11 Relleno de puntos
cercanos
12 Relleno definido
por el usuario
Fig. 10. Patrones de relleno de la función setfillstyl
Comentarios de: Conceptos básicos de Graficación en C++ (0)
No hay comentarios