You are on page 1of 6

MANEJO DE GRAFICOS EN C / C++

Las funciones que llevan a cabo los grficos en C es permitir generar dibujos y presentaciones de los programas en general. Las funciones de salida dependen del adaptador y del monitor que se est utilizando. Resolucin Las imgenes grficas mostradas en un monitor de computadora se componen de pequeos puntos llamados pxeles, los cuales estn distribuidos en la pantalla en filas; existe una cantidad especfica de filas y cada fila tiene una cantidad especfica de pxeles. Inicializar el monitor en modo grfico Para habilitar el monitor en modo grfico y utilizar sus pxeles, es necesario incluir el encabezado #include <graphics.h> que contiene las declaraciones y funciones relacionadas con graficacin e inicializar el monitor en modo grfico y utilizar sus pxeles con la funcin initgraph(). Dicha funcin requiere las siguientes declaraciones: int monitor=DETECT; // Variable para detectar el tipo de monitor int modo; // Modo de operacin del monitor Tambin se puede declarar e inicializar con un tipo de monitor especfico como lo Presenta. int monitor=VGA; // Variable para usar el monitor tipo VGA int modo=VGAHI; // Usar el monitor VGA a su maxima resolucin

funcin initgraph() la funcin initgraph() se utiliza para habilitar el monitor seleccionado en modo grfico. La funcin initgraph() tiene 3 parmetros o argumentos: 1) La variable que identifica el monitor. 2) El modo de operacin grfico. 3) Subdirectorio que contiene los controladores de los monitores y los archivos con los tipos de letra. funcin closegraph() Para terminar de usar el monitor en modo grfico y devolverlo a su modo de texto normal se usa la funcin closegraph().

Uso de coordenadas Una vez que se inicializa el monitor en modo grfico, las coordenadas tienen al pxel como unidad de medida. La funcin getmaxx() calcula la cantidad de pxeles por rengln y la funcin getmaxy() calcula la cantidad de renglones de la pantalla. Las funciones de grficos tienen como estndar el orden de manejo de coordenadas como columna, rengln; es decir, primero se anota la columna y despus el rengln para posicionarse en dicha coordenada. Funciones para la graficacin Estas funciones son primordiales ya que mediante estas podremos utlizarlas para colocar pixeles, lneas, figuras geomtricas, etc. funcin putpixel() Esta funcion coloca un punto o pxel de un color especfico en determinada coordenada de la pantalla. Esta funcin requiere 3 argumentos 1) Columna del punto (coordenada x). 2) Rengln del punto (coordenada y). 3) Color del pxel. putpixel(int x, int y, int color); funcin line() Esta funcin se utiliza para dibujar una lnea entre 2 puntos. Para ello, la funcin requiere 4 parmetros que representan las coordenadas (en pixeles) de los dos puntos que se desea unir mediante una lnea recta. funcin setlinestyle() 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 interrumpida, o un patrn de lnea definido por el usuario. Esta funcin requiere 3 argumentos: 1) Tipo de lnea: Puede ser SOLID_LINE, DOTTED_LINE, CENTER_LINE, DASHED_LINE o USERBIT_LINE. 2) Patrn: Este argumento regularmente es ignorado (excepto cuando se trata de un tipo de lnea definido por el usuario). 3) Ancho de lnea: Define la amplitud del trazo. setlinestyle(DOTTED_LINE,0, NORM_WIDTH); La funcin circle() Esta funcin dibuja un crculo y requiere 3 argumentos: 1) Coordenada de la columna del centro (en pixeles). 2) Coordenada del rengln del centro (en pixeles). 3) Radio del crculo (en pixeles).

circle(300,150,27); funcin rectangle() Esta funcin dibuja un rectngulo indicando las coordenadas de las esquinas superior izquierda e inferior derecha respectivamente. rectangle(50,100,400,250); funcin ellipse() Se usa esta funcin para dibujar un arco elptico o una elipse completa. Esta funcin requiere 6 argumentos: 1) Columna del centro de la elipse (coordenada x). 2) Rengln del centro de la elipse (coordenada y). 3) ngulo inicial del arco. 4) ngulo donde termina el arco. 5) Radio horizontal de la elipse. 6) Radio vertical de la elipse. ellipse(100,150,0,359,25,40); funcin arc() Se usa esta funcin para dibujar un arco circular. Esta funcin requiere 5 argumentos: 1) Columna del centro del arco (coordenada x). 2) Rengln del centro del arco (coordenada y). 3) ngulo inicial del arco. 4) ngulo donde termina el arco. 5) Radio. arc(100,150,0,29,40); funcin setcolor() Se utiliza esta funcin para definir el color de los trazos siguientes; es decir, antes de dibujar un trazo de un color especfico, ste debe definirse. Esta funcin slo tiene un argumento que representa el cdigo del color desead por ejemplo. BLACK, RED, etc. o bien su nmero entero correspondiente. Constante Valor BLACK 0 DARKGRAY 8 BLUE 1 LIGHTBLUE 9 GREEN 2 LIGHTGREEN 10 CYAN 3 LIGHTCYAN 11 RED 4 LIGHTRED 12 MAGENTA 5 LIGHTMAGENTA 13 BROWN 6 YELLOW 14 LIGHTGRAY 7 WHITE 15

Definiendo el tipo de relleno de una figura con la funcin setfillstyle() Si se desea rellenar una figura, es necesario definir previamente el patrn y color del relleno. los patrones de relleno disponibles. PATRN VALOR DESCRIPCIN EMPTY_FILL 0 Color del fondo SOLID_FILL 1 Relleno slido con el color determinado LINE_FILL 2 Relleno con lnea (---) LTSLASH_FILL 3 Relleno con /// lneas de ancho normal SLASH_FILL 4 Relleno con /// lneas BKSLASH_FILL 5 Relleno con \\\ lneas LTBKSLASH_FILL 6 Relleno con \\\ lneas de ancho normal HATCH_FILL 7 Relleno de lneas cruzadas ligeras XHATCH_FILL 8 Relleno de lneas cruzadas gruesas INTERLEAVE_FILL 9 Relleno de lneas WIDE_DOT_FILL 10 Relleno de puntos espaciados CLOSE_DOT_FILL 11 Relleno de puntos cercanos USER_FILL 12 Relleno definido por el usuario Por ejemplo, si se desea definir el patrn de relleno de puntos cercanos de color rojo, se usa la funcin setfillstyle(). setfillstyle(CLOSE_DOT_FILL, RED); funcin floodfill() Una vez seleccionado el patrn de relleno mediante la funcin setfillstyle(), se procede a rellenar una figura usando la funcin floodfill(). Es muy importante resaltar que la figura que se desea rellenar est completamente cerrada, ya que esta funcin contiene un algoritmo que busca el contorno de la figura y, en caso de encontrar una apertura, la funcin extralimitar la figura y tambin rellenar la parte externa de la misma. La funcin floodfill() requiere identificar un punto que se encuentre dentro del contorno de la figura y necesita 3 argumentos: 1) Coordenada de la columna del punto interno de la figura. 2) Coordenada del rengln del punto interno de la figura. 3) Color del borde de la figura. Archivar y cargar una imagen Igual que se puede almacenar cualquier variable con un tipo de dato en particular como enteros, reales, caracteres, cadenas, registros, o cualquier estructura de datos, tambin es posible almacenar en un archivo una imagen que se despliega en la pantalla. las funciones necesarias para el manejo de imgenes son las siguientes. Declaracin de variables necesarias Cuando se dibuja una imagen en la pantalla, sta puede ser almacenada en una variable de memoria para manipularse completamente. Esto se logra mediante un apuntador de tipo char far, el cual puede almacenar en memoria una imagen de hasta 1MB.

Cmo cargar una imagen en memoria? Para almacenar una imagen previamente dibujada en la pantalla, debe calcularse su tamao en bytes, reservar espacio de memoria para posteriormente cargarla en una variable de memoria mediante las declaraciones . Esto se logra con las funciones que se presentan a continuacin. Declaracin Uso long tamano; Variable de tipo entero largo para calcular el tamao en bytes de la imagen que se desea archivar. char far *imagen; Apuntador para capturar en memoria la imagen (puede ser direccionada hasta 1 MB) funcin imagesize() Se utiliza esta funcin para calcular el espacio (en bytes) ocupado por una imagen. Requiere de 4 argumentos que representan las coordenadas de las esquinas superior izquierda e inferior-derecha respectivamente y devuelve un valor que representa su tamao, el cual debe almacenarse en una variable de tipo entero largo funcin farmalloc() Esta funcin reserva espacio en memoria para almacenar la imagen cuyo bloque posiblemente exceda 64k (segn el tamao calculado por la funcin imagesize) y requiere incluir el encabezado #include <alloc.h> (Fig. 23). funcin getimage() Se usa esta funcin para almacenar en un apuntador de tipo char far la imagen comprendida entre los puntos indicados por las coordenadas de sus esquinas superiorizquierda e inferior-derecha Funcin Uso tamano=(long int) imagesize(x1,y1,x2,y2) Calcula el espacio necesario para capturar en memoria la imagen comprendida entre las esquinas (x1,y1) a (x2,y2) imagen=(char far *) farmalloc(tamano) Reserva el espacio de memoria indicado por tamao getimage(x1,y1,x2,y2,imagen) Captura en el apuntador imagen el dibujo comprendido entre (x1,y1) y (x2,y2)

BIBLIOGRAFA Barkakati Nabajyoti. The Waite Groups. Turbo C Bible. Howard W. Sams & Company. Estados Unidos. 1990. Garca Badell, J. Javier. "Turbo C. Programacin en manejo de archivos". Macrobit. 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. Staugaard, Andrew. Tcnicas estructuradas y orientadas a objetos. Una introduccin utilizando C++. Segunda edicin. Prentice Hall. Estados Unidos.1998.