Está en la página 1de 12

Funciones gráficas para el dibujo de figuras geométricas

Iniciando modo gráfico: Para iniciar el Modo Gráfico debemos escribir las
siguientes sentencias:

int gdriver=DETECT, gmode;


initgraph(&gdriver,&gmode,"C:\\TC20\\BIN");
//Inicia el Modo Gráfico.

Con estas sentencias estamos diciéndole al compilador que auto detecte el


driver de muestra tarjeta gráfica que el modo gráfico sea el predeterminado y
que el path hacia la carpeta "BGI" (donde se encuentran entre otras cosas los
drivers de video y las fuentes) es "C:\BORLANDC\BGI". Con esto tenemos
nuestro modo gráfico iniciado. La manera de terminar el modo gráfico es
escribir la sentencia siguiente:

closegraph();

Es conocida la pobreza de las funciones gráficas incluidas en "graphics.h". A


pesar de esto, vale la pena conocerlas y manejarlas correctamente. Para
describirlas, es necesario aclarar que en su mayoría tratan con coordenadas
(iniciales y finales) compuestas por un par ordenado al estilo (eje x, eje y).
Convendremos en que las coordenadas iniciales serán x e y, y las coordenadas
finales serán x2 e y2. De esta manera describiremos la función y a
continuación haremos un ejemplo sencillo. Comencemos:
Dibujar un Circulo

circle(x, y, angulo_inicial, angulo_final,


radio);

Aquí tenemos que para hacer el círculo completo necesitamos que el ángulo
inicial sea igual a 0 y el ángulo final a 360.
Creo que no hace falta describir para qué se utiliza el radio. A modo de
ejemplo tendremos:

circle(320, 240, 0, 360, 100);

En este ejemplo dibujamos un círculo en el centro de la pantalla (considerando


una resolución de 640x480) con un radio igual a 100.

Dibujar una Elipse

ellipse(x, y, angulo_inicial, angulo_final,


radio_en_x, radio_en_y);

Al dibujar la elipse, necesitamos diferir entre radio en x y radio en y, ya que si


fuesen iguales sería un círculo. Ejemplo:

ellipse(320, 240, 0, 360, 50, 100);

En este ejemplo dibujamos la elipse en el centro de la pantalla con un radio en


x igual a 50 y un radio en e igual a 100.
Dibujar una Línea

line(x, y, x2, y2);

La línea sólo necesita especificar las coordenadas iniciales y las finales. Como
ejemplo:

line(300, 200, 400, 300);

Entonces dibujamos nuestra línea entre las coordenadas iniciales (300,200) y


(400,300).

Dibujar un Rectángulo

rectangle(x, y, x2, y2);

Al igual que la línea sólo necesitamos las coordenadas iniciales y las finales.
Como ejemplo:

rectangle(0, 0, 100, 200);

Es necesario aclarar que con este comando es posible crear cuadrados


tomando como base que las distancias numéricas entre x y x2 y entre y e y2
deben ser iguales.
Setear el Color de Línea

setcolor(color_elegido);

El color elegido debe encontrarse entre 0 y 15 en una paleta de 16 colores. Por


ejemplo, 0 es negro, 1 es azul, 2 es verde claro, 4 es rojo, 9 es celeste, 15 es
blanco, etc. Como ejemplo:

setcolor(4);
rectangle(100, 100, 200, 200);

En este ejemplo hicimos un cuadrado de color rojo.

Dibujar una Barra

bar(x, y, x2, y2);

Aquí sencillamente dibujamos un rectángulo relleno, ya que la sintaxis de bar


es idéntica a la de rectangle y funciona de igual manera:

setcolor(2);
bar(0, 0, 200, 20);

En el ejemplo dibujamos una barra de 200 de largo y 20 de ancho partiendo de


(0,0). La barra es de color verde claro.
Dibujar arco

arc(x, y, ángulo inicial, ángulo final, radio)


La función "arco" se usa para dibujar un arco con centro (x, y) y stangle
especifica el ángulo inicial, endangle especifica el ángulo final y el último
parámetro especifica el radio del arco. La función de arco también se puede
usar para dibujar un círculo, pero para ese ángulo inicial y el ángulo final
deben ser 0 y 360 respectivamente.

arc( 100, 100, 0, 135, 50 );

En el programa (100, 100) son las coordenadas del centro del arco, 0 es el
ángulo inicial, 135 es el ángulo final y el radio del arco es 50.

Dibujar barra 3D
bar3d(left, top, right, inferior, profundidad,
topflag);

bar3d se utiliza para dibujar una barra rellena rectangular bidimensional. Se


requieren las coordenadas de la esquina superior izquierda e inferior derecha
de la barra para dibujar la barra. dónde,
left: especifica la coordenada X de la esquina superior izquierda,
top: especifica la coordenada Y de la esquina superior izquierda,
right: especifica la coordenada X de la esquina inferior derecha,
bottom: especifica la coordenada Y de la esquina inferior derecha,
profundidad especifica la profundidad de la barra en píxeles,
topflag: determina si se coloca una tapa tridimensional la barra o no (si no es
cero, entonces se pone de otra manera no).

bar3d( 100, 100, 200, 200, 20, 1 );

Amanera de ejemplo tenemos la siguiente sintaxis


Dibujar polígonos

drawpoly ( num “n+1”, polypoints “n*2”);

La función Drawpoly se utiliza para dibujar polígonos, es decir,


triángulo, rectángulo, pentágono, hexágono, etc.
contiene dos parámetros num y polypoints.
El primer parámetro num especifica el número de puntos que son “n + 1”
mientras que hay “n” vértices. El número de puntos es n + 1 porque las
coordenadas del primer punto deben ser iguales a (n + 1) ésimo para dibujar
una figura completa.
los polypoints dicen la secuencia de (n * 2) enteros. Cada par de números
enteros da las coordenadas xey de un punto del polígono.
A manera de ejemplo y para una comprensión mejor la sig. sintaxis

#include<stdio.h>
#include<conio.h>
#include<graphics.h>

void main()
{
int gd = DETECT, gm, array [] = {320,240, 340,220,
360,240, 360,280, 320,280, 320,240);

initgraph (& gd, & gm, "");

drawpoly (6, matriz);

getch ();

closegraph ();
}

Dibujar elipse con relleno (filliellipse)


filliellipse(x, y, x_radio, y_radio);

donde (x, y) son el centro de la elipse y (x_radio, y_radio) son los radios de la
elipse
a manera de ejemplo:
Entrada: x= 200, y = 200,
x_radius = 50, y_radius = 90
   fillellipse ( x , y , x_radius , y_radius ) ;

Salida:

Rellenar un polígono (fillpoly)


La función Fillpoly dibuja y llena un polígono. Requiere los mismos
argumentos que drawpoly .
A manera de ejemplo siguiendo los pasos de (drawpoly);
fillpoly ( 4 , puntos ) ;

floodfill
floodfill(x, y, border_color)
La función de inundación se utiliza para llenar un área cerrada. El patrón de
relleno actual y el color de relleno se utilizan para rellenar el área. (X, y) es
cualquier punto de la pantalla si (x, y) se encuentra dentro del área, entonces el
interior se rellenará; de lo contrario, el exterior se rellenará, el borde especifica
el color de límite del área. Para cambiar el patrón de relleno y el color de
relleno, use setfillstyle. El código que se proporciona a continuación dibuja un
círculo y luego lo llena.

setcolor(RED);
circle(250,250,100);
floodfill(250,250,RED);

Función lineto
 La función lineto () que dibuja una línea desde la posición actual hasta el
punto (x, y).
lineto(x, y);
 Cuando la posición inicial del punto es (0,0)
A continuación, se muestra la implementación de la función lineto () con la
posición inicial en el origen:
lineto(250, 100);
  

 Cuando la posición inicial del punto no es (0, 0)


A continuación, se muestra la implementación de la función lineto () con una
posición inicial distinta al origen:
moveto(100, 100); (La función moveto cambia la posición actual (CP)
a (x, y) )
lineto(250, 100);

Función pieslice
pieslice(x, y, r, s_angle, e_angle);
Pieslice() dibuja y llena un sector circular con centro en (x, y) y un radio r
dado. El sector viaja de s_angle a e_angle, que son los ángulos de inicio y
finalización del sector circular. Los ángulos de la tarta se dan en grados y se
miden en sentido anti horario.
A manera de ejemplo:
x = 300, y = 300, s_angle = 0, e_angle = 120,
r = 150

pieslice(x, y, r, s_angle, e_angle);

Función sietviewerport
setviewport (left, top, right, bottom, clip);

La función setviewport establece la ventana gráfica actual para la salida de


gráficos. se utiliza para restringir el dibujo a una parte particular de la
pantalla.
A manera de ejemplo;

setviewport(middleofx - 50, middleofy - 50,


middleofx + 50, middleofy + 50, 1);
circle(50, 50, 55);

Función linerel
linerel(x, y);
La función Linerel dibuja una línea desde la posición actual (CP) hasta un
punto que está a una distancia relativa (x, y) del CP, luego avanza el CP en (x,
y). Puede usar getx y gety para encontrar la posición actual. Esta función es
muy parecida a la de lineto si no es por decir que es la misma.
Cuando la posición actual está en el origen, es decir, (0,0)

A continuación, se muestra la implementación de la función linerel () en C:


linerel(200, 100);
Cuando la posición actual es diferente al origen, (100, 150).
A continuación se muestra la implementación de la función linerel () en C:
moveto(100, 150);
linerel(150, 60);

Limpiar Pantalla
cleardevice();

Aquí cleardevice() se utiliza en forma análoga a clrscr().

También podría gustarte