Post on 08-Nov-2015
description
Programacin II
Matemticas Aplicadas y Computacin Andrs Hernndez Balderas
2015
5. Graficacin Bsica con C
5.1 Recursos para la graficacin
Recursos
Fsicos Monitor Tarjeta grfica Memoria
Lgicos Lenguaje + Bibliotecas
Colores Pixeles Lneas Crculos Rectngulos Rellenos Etc.
5.1 Recursos para la graficacin
En cuanto a recursos lgicos, en este curso se hace uso del lenguaje C y de la biblioteca winbgim.
Los recursos fsicos depende de cada una de las computadoras donde se ejecute el cdigo.
5.1 Recursos para la graficacin
La forma de iniciar el modo grfico es con la instruccin:
initwindow(int ancho, int alto);
Se abrir una ventana de tamao ancho x alto pixeles donde el origen ser el pixel en la posicin (0,0).
5.1 Recursos para la graficacin
(0,0)
(0,Ymax)
(Xmax,0)
(Xmax,Ymax)
pixel
Incr
emen
to d
e Y
Incremento de X
5.2 Funciones de posicionamiento
Muchas de las funciones grficas involucran una posicin. Sin embargo, si se desea posicionar el cursor en un pixel determinado se puede hacer uso de la funcin:
moveto(int x, int y);
5.3 Funciones de graficacin
Inicia modo grfico
initwindow(int ancho,int alto);
Para cerrar modo grfico
closegraph();
5.3 Funciones de graficacin
Obtiene el valor de la mxima coordenada horizontal
getmaxx();
Obtiene el valor de la mxima coordenada vertical
getmaxy();
5.3 Funciones de graficacin
Borrar pantalla
cleardevice ();
Establece el color actual
setcolor (int color);
color es un entero que indica el color que se utilizar por default para dibujar los grficos
5.3 Funciones de graficacin
Nombre de la constante (color) Valor
BLACK 0
BLUE 1
GREEN 2
CYAN 3
RED 4
MAGENTA 5
BROWN 6
LIGHTGRAY 7
DARKGRAY 8
LIGHTBLUE 9
LIGHTGREEN 10
LIGHTCYAN 11
LIGHTRED 12
LIGHTMAGENTA 13
YELLOW 14
WHITE 15
Si se desea utilizar un color RGB se puede hacer uso de la funcin:
COLOR (R, G, B);
5.3 Funciones de graficacin
Traza una lnea desde la posicin actual de cursor hasta (x,y)
lineto (int x, int y);
Traza una lnea desde (x1,y1) hasta (x2,y2)
line (int x1, int y1, int x2, int y2);
5.3 Funciones de graficacin
Dibuja un circulo en (x,y) de radio r
circle (int x, int y, int r);
Rectngulo del punto (izquierda, arriba) a (derecha, abajo)
rectangle (int izq, int arr, int der, int abaj);
5.3 Funciones de graficacin
Dibuja un pixel en (x,y) de color c
putpixel (int x, int y, int c);
Dibuja un arco centrado en (x,y) desde un ngulo inicial iniang hasta un ngulo final finang y radio radio. Los ngulos se miden en sentido inverso a las manecillas del reloj iniciando en las 3 hrs.
arc(int x, int y, int iniang, int finang, int radio);
5.3 Funciones de graficacin
Dibuja una elipse con centro (x,y) desde un ngulo inicial iniang hasta un ngulo final finang y radios radiox y radioy
ellipse(int x, int y, int iniang, int finang, int radiox, int radioy);
5.3 Funciones de graficacin
Traza un polgono de npuntos-1 vrtices de acuerdo a las coordenadas de *puntos. Para que el polgono se dibuje correctamente (se cierre), la primera y ltima coordenada deben ser iguales
drawpoly(int npuntos, int *puntos);
5.3 Funciones de graficacin
Establece una subventana dentro de la ventana principal. Los parmetros (iz,ar), (de,ab) indican las coordenadas que definen el rectngulo contenedor de la subventana. C (0 o 1) indica si la grfica se cortar si rebasa los lmites. Los trazos solo afectarn a esta rea. El primer pixel ser el nuevo origen (0,0).
setviewport(int iz, int ar, int de, int ab, int C);
5.3 Funciones de graficacin
Borra el contenido del viewport actual
clearviewport();
5.3 Funciones de graficacin
Establece el estilo que lnea que se utilizar en los siguientes trazos. Se debe especificar el estilo de lnea e, la trama de usuario t y el grosor g. La trama slo se debe establecer cuando e=USERBIT_LINE
setlinestyle(int e, unsigned t, int g);
5.3 Funciones de graficacin
Estilo de lnea Valor Descripcin
SOLID_LINE 0 Lnea continua
DOTTED_LINE 1 Lnea punteada
CENTER_LINE 2 Lnea centrada
DASHED_LINE 3 Lnea discontinua
USERBIT_LINE 4 Lnea definida por el usuario
Grosor Valor Descripcin
NORM_WIDTH 1 1 pixel
THICK_WIDTH 3 3 pixeles
Para la trama de usuario, un bit 1 en esta trama indica que el pxel correspondiente ser asignado el color actual. Un bit 0 indica que el pxel correspondiente no ser alterado.
5.3 Funciones de graficacin
Establece el estilo de relleno de acuerdo a la trama y color deseados
setfillstyle(int trama, int color);
5.3 Funciones de graficacin
Trama Valor Significado
EMPTY_FILL 0 Rellena con el color de fondo
SOLID_FILL 1 Rellena enteramente
LINE_FILL 2 Rellena con lneas horizontales: ---
LTSLASH_FILL 3 Rellena con rayas finas: ///
SLASH_FILL 4 Rellena con rayas gruesas: ///
BKSLASH_FILL 5 Rellena con rayas inversas y finas: \\\
LTBKSLASH_FILL 6 Rellena con rayas inversas y gruesas: \\\
HATCH_FILL 7 Rellena con lneas cruzadas cuadriculadamente: +++
XHATCH_FILL 8 Rellena con lneas cruzadas diagonalmente: XXXX
INTERLEAVE_FILL 9 Rellena con lneas entrelazadas
WIDE_DOT_FILL 10 Rellena con lunares bastante distanciados
CLOSE_DOT_FILL 11 Rellena con lunares poco distanciados
USER_FILL 12 Rellena con la trama definida por el usuario
5.3 Funciones de graficacin
Dibuja una elipse, con centro en (x,y) y radios radiox y radioy, rellena con el estilo actual.
fillellipse(int x, int y, int radiox, int radioy);
Dibuja un polgono relleno con el estilo actual
fillpoly(int npuntos, int *puntos);
5.3 Funciones de graficacin
Dibuja una rebanada de pastel con centro en (x,y) desde un ngulo inicial i hasta un ngulo final f y radio r, rellena con el estilo actual.
pieslice(int x, int y, int i, int f, int r);
Dibuja una rebanada de pastel elptico con centro en (x,y) desde un ngulo inicial i hasta un ngulo final f y radios rx y ry , rellena con el estilo actual.
sector(int x, int y, int i, int f, int rx, int ry);
5.4 Combinacin de texto y grficas
No es posible utilizar funciones como printf para escribir texto ya que se est utilizando el modo grfico.
Para escribir en este ambiente, se hace uso de funciones que permiten elegir una fuente o tamaos diferentes al estndar.
5.4 Combinacin de texto y grficas
Establece la fuente del texto f, la direccin en que ser desplegado dir y el tamao de los caracteres t.
settextstyle(int f, int dir, int t);
5.4 Combinacin de texto y grficas
Constante fuente Valor Significado
DEFAULT_FONT 0 Fuente bitmap de 8x8
TRIPLEX_FONT 1 Fuente escalable de tipo triple
SMALL_FONT 2 Fuente escalable pequea
SANS_SERIF_FONT 3 Fuente escalable de tipo sans serif
GOTHIC_FONT 4 Fuente escalable de tipo gtico
SCRIPT_FONT 5 Fuente escalable de tipo manuscrito
SIMPLEX_FONT 6 Fuente escalable de tipo manuscrito simple
TRIPLEX_SCR_FONT 7 Fuente escalable de tipo manuscrito triple
COMPLEX_FONT 8 Fuente escalable de tipo complejo
EUROPEAN_FONT 9 Fuente escalable de tipo europeo
BOLD_FONT 10 Fuente escalable en negrita
Constante direccin Valor Significado
HORIZ_DIR 0 Texto horizontal
VERT_DIR 1 Texto vertical
5.4 Combinacin de texto y grficas
El texto puede justificarse alrededor de la posicin actual del cursor. La justificacin por default es a la izquierda si el texto est en horizontal horiz y en la parte superior si se despliega en forma vertical vert.
settextjustify(int horiz, int vert);
5.4 Combinacin de texto y grficas
Constante horizontal Valor Significado
LEFT_TEXT 0 Justificar a la izquierda
CENTER_TEXT 1 Centrar el texto
RIGHT_TEXT 2 Justificar a la derecha
Constante vertical Valor Significado
BOTTOM_TEXT 0 Justificar debajo
CENTER_TEXT 1 Centrar el texto
TOP_TEXT 2 Justificar arriba
5.4 Combinacin de texto y grficas
Despliega en la posicin actual, una cadena de caracteres utilizando la fuente, la direccin y el tamao actuales.
outtext(char *cadena);
Despliega, en la posicin (x,y), una cadena de caracteres utilizando la fuente, la direccin y el tamao actuales.
outtextxy(int x, int y, char *cadena);