Vous êtes sur la page 1sur 12

CONCEPTOS BSICOS DE GRAFICACIN

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 caractersticas como la resolucin,
nmero
posible de colores, modo texto o modo grfico y otros elementos donde cada
modo
requiere de cierto equipo (hardware).
Resolucin-Las imgenes grficas mostradas en un monitor de computadora
se componen depequeos puntos llamados pxeles, los cuales estn
distribuidos en la pantalla en filas; existe unacantidad especfica de filas y
cada fila tiene una cantidad especfica de pxeles. La cantidad depxeles
usada en la pantalla se conoce como resolucin. Cada modo grfico tiene una
resolucinparticular.
Inicializar el monitor en modo grfico-Para habilitar el monitor en modo
grfico y utilizar sus pxelesy funciones de grficos, es necesario incluir el
encabezado #include <graphics.h> que contiene lasdeclaraciones y
funciones relacionadas con graficacin e inicializar el monitor en modo
grfico yutilizar sus pxeles con la funcin initgraph().
La funcin initgraph()-Una vez declaradas las variables monitor y modo que
controlarn laresolucin identificando el tipo de pantalla o monitor y su modo
de operacin respectivamente, seutiliza la funcin initgraph() para habilitar el
monitor seleccionado en modo grfico. La funcininitgraph() 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 (archivos
con extensin BGI) y losarchivos con los tipos de letra.
Uso de coordenadas-Una vez que se inicializa el monitor en modo grfico, las
coordenadas tienenal pxel como unidad de medida. La funcin getmaxx()
calcula la cantidad de pxeles por rengln yla funcin getmaxy() calcula la
cantidad de renglones de la pantalla. Las funciones de grficostienen 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. Cabedestacar que el conteo de columnas y renglones


inicia partiendo de la esquina superior izquierdadel monitor
2
Para realizar grficos en C++ necesitamos poner el sistema en modo grfico.
Para ello debemos incluir a nuestro programa la biblioteca de grficos
GRAPHICS.H
#include <graphics.h>
Para inicializar el modo grfico se utiliza la funcin initgraph() y para
detenerlo la funcin closegraph().
A la funcin initgraph se le deben pasar 3 argumentos que permitirn
detectar de forma automtica la placa de video y fijar el modo de video ms
alto posible:
int driver=DETECT, modo;
initgraph(&driver,&modo,C:\\TC\\BGI);
El primer parmetro (&driver) es asignado a DETECT, por la tanto la funcin
detectgraph() es llamada, y un dispositivo y modo grfico (segundo
parmetro) apropiados sern seleccionados.
El tercer parmetro especifica el directorio donde los dispositivos grficos
estn localizados.
Si la funcin initgraph() falla, puede interceptarse un cdigo de error e
informar al usuario de dicho problema:
if (graphresult()!= grOk)
{
cout << Error al iniciar el modo grfico, el programa finalizar;
getch();
exit (1);
}
De ahora en adelante es posible utilizar cualquier funcin grfica en nuestro
programa.
Para finalizar el modo grfico ejecutamos la siguiente instruccin:
closegraph();

Generalmente al iniciar el modo grfico se dispone de una resolucin de


640x480. Es decir disponemos de 640 pixeles en el eje x y 480 pixeles enel
eje y.
Establecer colores
Para seleccionar el color de fondo en modo grafico debemos utilizar la
funcin setbkcolor() y para establecer el color de dibujo setcolor(). Para
limpiar la pantalla en modo grfico se utiliza la funcin cleardevice() que
dejar la pantalla con el color establecido en setbkcolor().
Funciones ms utilizadas:
rectangle (int X1, int Y1, int X2, int Y2); Dibuja un rectngulo sin relleno en la
pantalla marcado por los puntos
(X1, Y1) y (X2, Y2), donde X1 es el extremo izquierdo del rectngulo, Y1 es el
extremo superior, X2 es el extremo derecho e Y2 el extremo inferior del
rectngulo.
circle (int X, int Y, int radio);
Dibuja un circulo (cuyo tamao de radio est dado por la variable radio) en la
pantalla con centro en los puntos (X, Y).
elve un valor entre -1 y -16.
Finalizacin del modo grfico

closegraph( );

Cierra el modo grfico y nos devuelve al modo texto.

restorecrtmode( );

Reestablece el modo de video original ( anterior a initgraph ).

/* Inicializacin del modo grfico. */

#include <graphics.h>

main() /* Inicializa y finaliza el modo grfico. */


{
int tarjeta, modo, error;
detectgraph(&tarjeta,&modo);
initgraph(&tarjeta,&modo,"C:\\TC\\BGI");
error=graphresult( );
if (error)
{
printf("%s",grapherrormsg(error));
}
else
{
getch( );
closegraph( );
}
}
Introduccin bsica de manejo de grficos.Los grficos no son parte integral
del lenguaje c sin embargo existen libreras para crear grficosen c. La ms

comn y fcil de manejar es la BGI de borland, esta incluye la librera


graphics y losmanejadores de video. Para trabajar en modo grafico se debe
contar con los manejadores detarjetas de video, se deber incluir su ruta al
inicializar el modo grfico con initgraph.Para que el compilador pueda aceptar
la librera de grficos es necesario configurarlo. En borland cesto se hace con
el target expert . Se debe recordar que las funciones de grficos funcionen en
MS_DOS. Para activar el target expert se tiene que obtener el men
contextual del
editor.(Haciendo clic derecho sobre el cdigo fuente). Luego se debe elegir
una aplicacin (.EXE),
Dos Estndar y palomear la BGI. En versiones ms antiguas, se tiene que ir
al men de opciones
y luego al men de linkery all seleccionar graphics. Tambin es buena idea
tener las rutas de laslibreras y de los archivos de inclusin con sus rutas
absolutas de acuerdo a la instalacin delcompilador. Cuando se elige la
configuracin automtica haciendo gdriver = DETECT, se tendr lamejor
resolucin disponible para la tarjeta grfica. En las computadoras con una
tarjeta Sper VGA. Esto ser una resolucin de 480 X 640 pixeles y 16
colores.
En el modo grfico existe una enorme cantidad de funciones que realizan
desde la tarea mas sencilla como es pintar un pxel, hasta la tarea mas
compleja como pudiera ser dibujar un carcter por medio de trazos.
libreria
Para trabajar el modo grfico es necesario incluir la librera graphics.h como
hacer uso de la BGI (Borlan Graphics Interphase)

Para usar cualquier funcin es necesario colocar el adaptador de video en


modo grafico y esto se logra a travs de la funcin initgraph(); y al
terminares necesario regresar al modo original a travs de la funcin
closegraph();

Para iniciar un programa en ambiente grfico es recomendable correr una


subrutina de inicializacin de grficos y deteccin de errores.

Algunos ejemplos de las funciones que se pueden encontrar en la librera de

grphics.h son:
Line(); circle(); arc(); elipse();rectangle(); ottextxy(); putpixel();
Para saber mas de las funciones de la librera de grficos lo pueden buscar en
el ndice de turbo c

NOTA: Para dar de alta en tu computadora el modo de grficos tienes que


hacer los siguientes pasos: OPTIONS ->LINKER->LIBRARIE->seleccionar
GRAPHICS LIBRARY
EJEMPLO:
#include<graphics.h>
#include<conio.h>
#include<math.h>
int main(void)
{
clrscr();

double fx;
int graphdriver=DETECT,graphmode;
initgraph(&graphdriver,&graphmode,"..\\bgi");
outtextxy(30,30,GRAFICACION DE SENO );
setbkcolor(RED);
for (int x=0;x<=90;x++)
{
fx=(1+sin(x))*40+200;
putpixel(x*15,fx,YELLOW);
}
setcolor(BLUE);

line(310,100,310,400);
line(100,240,500,240);
getch();
closegraph();
return 0;
}

Graficado de puntos
PutPixel(X,Y,CdigoDeColor);
Grafica, coloca un pixel en las coordenadas (X,Y) especificadas con el color
indicado por el cdigo.
Las coordenadas debern estar dentro del intervalo de coordenadas
mnimas y mximas correspondientes al plano seleccionado.
Graficado de Lneas
Line(X1,Y1,X2,Y2);
Traza una lnea de las coordenadas (X1,Y1) a las coordenadas (X2,Y2).
Utilizando el color y el estilo que estn activos. As como puede modificar el
color, tambin puede modificar el estilo de trazado de lneas.
LineRel(DeltaX,DeltaY);
Traza una lnea desde la posicin actual del cursor hasta las coordenadas
resultantes de incrementar X en DeltaX y Y en DeltaY.
LineTo(X,Y);
Traza una lnea desde la posicin actual del cursor hasta las coordenadas
(x,Y);
En los tres casos X y Y son datos o variables de tipo entero.
Graficacin de funciones matemticas.
La graficacin de funciones matemticas implica generalmente dos
problemas:
- La existencia explcita de ejes de graficacin diferentes de los propios de
pant.
- La necesidad de una escala para compatibilizar las medidas.
Adems al ser los ejes simples lneas horizontales o verticales, si bien
podemos graficarlo

con putpixel( ), C dispone de una funcin que permite trazar directamente


una
lnea:
line ( X1, Y1, X2, Y2 );
Donde X1, Y1 son las coordenadas de un extremo de la lnea, y X2, Y2 las del
otro extremo.
Todos estos parmetros son int por las mismas razones que invocamos en la
funcin putpixel( ): no pueden existir fracciones de pxel.
Sin embargo a diferencia de putpixel( ) carece de un parmetro de color, por
lo cual
deberemos recurrir a una instruccin adicional para establecer el mismo:
setcolor(ColorFrente)
setbkcolor(ColorFondo)
Siendo Color un valor entero que puede variar entre 0 y 15. A modo de
referencia estos
son los colores, sus valores numricos y las constantes que los representan:
Color Valor Fondo Frente
-------------------------------------------------------------------------------------BLACK 0 SI SI
BLUE 1 SI SI
GREEN 2 SI SI
CYAN 3 SI SI
RED 4 SI SI

MAGENTA 5 SI SI
BROWN 6 SI SI
LIGHTGRAY 7 SI SI
DARKGRAY 8 NO SI
LIGHTBLUE 9 NO SI
LIGHTGREEN 10 NO SI
LIGHTCYAN 11 NO SI
LIGHTRED 12 NO SI
LIGHTMAGENTA 13 NO SI
YELLOW 14 NO SI
WHITE 15 NO SI
Si no se establece un color para el fondo, el compilador adopta el Black por
defecto.
Los colores pueden escribirse directamente, lo cual resulta muy prctico, por
ejemplo:
setcolor(LIGHTGREEN)
setcolor(YELLOW)
ejemplo:
Dibujar un par de ejes coordenados.
----------------------------------------------------------------- */
#include<conio.h>
#include<stdlib.h>
#include<dos.h>

#include<process.h>
#include<stdio.h>
#include<graphics.h>
void ModoGrafico ( );
void ModoTexto ( );
// ----------------------------------------------------------------void main()
{
int XizqEjeH = 50;
int XderEjeH = 550;
int YEjeH = 300;
int XEjeV = 50;
int YinfEjeV = 50;
int YsupEjeV = 300;
int ColorEjes = LIGHTCYAN;
ModoGrafico();
setcolor(ColorEjes);
line(XizqEjeH,YEjeH,XderEjeH,YEjeH);
line(XEjeV,YinfEjeV,XEjeV,YsupEjeV);
getch();
ModoTexto();
}

// ----------------------------------------------------------------Graficacin de funciones exponenciales.


Las funciones exponenciales resultan de uso muy comn en ingeniera ya que
muchos fenmenos fsicos responden de forma exponencial. Si el lector no
est muy versado en tales funciones no debe albergar ningn temor: nosotros
le proporcionaremos las herramientas matemticas y Ud. slo se limitar al
aspecto de la graficacin.
Para el ejemplo que viene a continuacin utilizaremos una exponencial
creciente que
arranca de un valor inicial Vini y llega hasta un valor final Vfin. Su expresin
matemtica es la siguiente:
F(t) = Vini + (Vfin Vini)*(1 exp(-t / To))}
To es lo que se denomina la constante de crecimiento y es un dato de la
ecuacin.
Es el valor de la variable independiente para el cual la funcin alcanza el
63,2% de su
recorrido de amplitud. No nos preocupemos por este detalle.
t es la variable independiente, la cual haremos que vare entre un valor
inicial Tini y
un valor final Tfin, por ejemplo entre 0 y 6 veces To.
Esta forma de trabajar con variables para los valores iniciales y finales de
ciertos
parmetros de la funcin, es muy conveniente porque nos permite modificar
con facilidad
las condiciones de graficacin y obtener elementos particulares que nos

interese.
Por supuesto todo debe ajustarse automticamente para que no ocurran
distorsiones.
Por ejemplo:
double EscGrafH = (double)(XderEjeH-XizqEjeH)/(double)(Tfin-Tini);
double EscGrafV = (double)(YsupEjeV-YinfEjeV)/(double)(Vfin-Vini);
Ajustan automticamente las escalas al modificar los valores de cada
extreme.
El lazo de graficacin en s:
for(t =Tini; t<=Tfin; t+=Paso_t) {
Xp=XizqEjeH+EscGrafH*(t-Tini);
Yp=YEjeH-EscGrafV*(Vini+(Vfin-Vini)*(1-exp(-t/To)));
putpixel(Xp,Yp,ColorFn);
}
tambin tiene en cuenta los cambios de valores iniciales y finales de los
parmetros de graficacin. Comprenderemos mejor esto luego de tipear y
hacer correr el programa

Vous aimerez peut-être aussi