Gráficos en Lenguaje C
Gráficos en Lenguaje C
*controlador de gráficos
Entero que especifica el controlador gráfico que se va a utilizar. Puedes darle un valor a graphdriver
utilizando una constante del tipo de enumeración graphics_drivers.
*modográfico
Número entero que especifica el modo gráfico inicial (a menos que *graphdriver = DETECT). Si
*graphdriver = DETECT, initgraph establece *graphmode a la resolución más alta disponible
para el controlador detectado. Puedes darle a *graphmode un valor utilizando una constante de la
tipo de enumeración graphics_modes.
*rutaalconductordriver
Especifica la ruta del directorio donde initgraph busca primero los controladores gráficos (*.BGI).
Normalmente, initgraph carga un controlador de gráficos asignando memoria para el controlador (a través de
_graphgetmem), luego cargando el archivo .BGI apropiado desde el disco. Como alternativa a esto
esquema de carga dinámica, puedes vincular un archivo de controlador gráfico (o varios de ellos) directamente
en tu archivo de programa ejecutable.
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
/* detección automática de solicitudes */
int gdriver = DETECCIÓN, gmode, códigoDeError;
/* inicializar modo gráfico */
initgraph(&gdriver, &gmode, "");
/* leer el resultado de la inicialización */
resultado del gráfico();
si (códigoError != grOk) /* ocurrió un error */
{
printf("Error gráfico: %s\n", grapherrormsg(errorcode));
printf("Presione cualquier tecla para detener:");
getch();
exit(1); /* devolver con código de error */
}
/* dibujar una línea */
línea(0, 0, getmaxx(), getmaxy());
/* limpiar */
getch();
cerrargráfico();
return 0;
}
La programación gráfica en lenguaje C se discute brevemente para proporcionar una visión general de
el principiante.
Normalmente la pantalla que ves en DOS está en modo texto, lo que significa que está destinada a
texto. Y para gráficos necesitas inicializar el modo gráfico. Y para que esto suceda necesitas
incluye ?graphics.h?.
El comando de círculo toma una coordenada X que significa eje vertical y una coordenada Y
lo que significa el eje horizontal. Y el último es el radio del círculo. cerrar gráfico();
Para empezar con la programación gráfica, Turbo C es una buena opción. A pesar de que DOS tiene sus propias limitaciones,
tiene un gran número de funciones útiles y es fácil de programar. Para implementar algoritmos gráficos, Para dar
visualización gráfica de estadísticas, Para ver señales de cualquier fuente, podemos usar gráficos de C. Aquí hay un artículo para comenzar
programación con Turbo C. 'Ejecutar y Aprender' es nuestro método. Hemos utilizado códigos fuente a lo largo de las explicaciones.
Simplemente ejecútalos para entender lo que está sucediendo.
/* simple.c
ejemplo 1.0
*/
#include<gráficos.h>
#include<conio.h>
void main()
{
int gd=DETECT, gm;
getch();
cerrargráfico();
}
Para ejecutar este programa, necesitas el archivo de cabecera graphics.h y el archivo de biblioteca graphics.lib
y el controlador de gráficos (archivo BGI) en la carpeta del programa. Estos archivos son parte de
Paquete Turbo C. En todos nuestros programas utilizamos un monitor VGA de 640x480. Así que todo
los programas están de acuerdo con esa especificación. Necesitas hacer lo necesario
cambios en tus programas según la resolución de pantalla. Para VGA
monitor, el controlador gráfico utilizado es EGAVGA.BGI.
Declaración:
void far initgraph(int far *graphdriver, int far *graphmode, char far *pathtodriver);
initgraph también restablece todas las configuraciones gráficas (color, paleta, posición actual, ventana de visualización, etc.) a
sus valores predeterminados, luego restablece graphresult a 0.
Argumentos:
*controlador gráfico: Entero que especifica el controlador gráfico que se utilizará. Puedes dar
controlador gráfico un valor utilizando una constante del tipo de enumeración de controladores gráficos.
*mododegraficacion : Entero que especifica el modo gráfico inicial (a menos que *controladordegráficos =
DETECT). Si *graphdriver = DETECT, initgraph establece *graphmode en el más alto
resolución disponible para el controlador detectado. Puedes darle a *graphmode un valor usando un
constante del tipo de enumeración graphics_modes.
Para obtener detalles de los diferentes modos gráficos y controladores gráficos, consulte
apéndice.
/*
formas.c
ejemplo 1.1
*/
#include<graphics.h>
#include<conio.h>
void main()
{
int gd=DETECT, gm;
int poly[12]={350,450, 350,410, 430,400,
350,350, 300,430, 350,450 };
initgraph(&gd, &gm, "");
círculo(100,100,50);
outtextxy(75,170, "Círculo");
rectángulo(200,50,350,150);
outtextxy(240, 170, "Rectángulo");
elipse(500, 100,0,360, 100,50);
outtextxy(480, 170, "Elipse");
línea(100,250,540,250);
outtextxy(300,260,"Línea");
• void arco lejano(int x, int y, int anglest, int angulof, int radio);
• void lejos círculo(int x, int y, int radio);
• void far pieslice(int x, int y, int stangle, int endangle, int radius);
Observaciones:
Argumentos:
Aquí, el ángulo de estrangulación y el ángulo final están en grados comenzando desde el eje x positivo en el
sistema de coordenadas polares en dirección antihoraria. si el ángulo es 0, ángulo final
son 360, dibujará un círculo completo. Consulta esta figura para una idea clara: Para los detalles
de color actual, color de relleno y patrones de relleno, consulte las secciones Líneas y Colores.
Otra forma básica con la que nos encontramos es un rectángulo. Para dibujar un borde,
usa un rectángulo con las coordenadas del contorno, para dibujar un cuadrado usa un rectángulo
con la misma altura y ancho. drawpoly() y fillpoly() son dos funciones útiles
dibujar cualquier polígono. Para usar estas funciones, almacene las coordenadas de la forma en
un arreglo y pasar la dirección del arreglo como un argumento a la función. Por
mirando la salida del programa anterior, puedes entender lo que
drawpoly es. fillpoly es similar, excepto que llena la forma con el relleno actual.
color.
Declaración:
• void rectángulo lejano(int izquierda, int arriba, int derecha, int abajo);
• void far drawpoly(int numpoints, int far *polypoints);
• void far fillpoly(int numpoints, int far *polypoints);
Comentarios:
Para dibujar un polígono cerrado con N puntos, numpoints debe ser N+1 y el
el arreglo polypoints[] debería contener 2(N+1) enteros con los primeros 2 enteros iguales a
últimos 2 enteros.
Estudemos más sobre formas más tarde. Aquí hay algunas ideas sobre colores.
Hay 16 colores declarados en graphics.h como se enumera a continuación.
NEGRO: 0
AZUL 1
VERDE 2
Cian: 3
RED: 4
MAGENTA 5
MARRÓN 6
GRIS CLARO 7
GRIS OSCURO 8
AZUL CLARO 9
VERDE CLARO 10
CYAÑO CLARO: 11
ROJO CLARO 12
MAGENTA_CLARO: 13
AMARILLO catorce
BLANCO 15
Para usar estos colores, utiliza las funciones setcolor(), setbkcolor() y setfillstyle().
La función setcolor() establece el color de dibujo actual. Si usamos setcolor(ROJO); y
dibuja cualquier forma, línea o texto después de eso, el dibujo será de color rojo. Puedes
usa el color definido arriba o un número como setcolor(4);. setbkcolor() establece
color de fondo para dibujar. Setfillstyle establece el patrón de relleno y los colores de relleno. Después de
llamando a setfillstyle, si usamos funciones como floodfill, fillpoly, bar, etc., las formas se
estar llenos con color de relleno y patrón establecidos utilizando setfillstyle. Estas funciones
las declaraciones son las siguientes.
Declaración:
Observaciones:
Aquí hay un programa de ejemplo con colores, píxeles, barra, limpiar dispositivo, etc.
stdlib.h se utiliza para la generación de números aleatorios. Tenemos una función random(no),
devuelve un número aleatorio entre 0 y no. El efecto es dibujando aleatoriamente
radio, círculos de color aleatorio con el mismo centro y píxeles aleatorios. kbhit()
la función (definida en conio.h) devuelve un valor distinto de cero cuando se presiona una tecla en
el teclado. Así que, el bucle continuará hasta que se presione una tecla.
/*
aleatorio.c
algunos efectos gráficos utilizando números aleatorios.
ejemplo 1.2
por HarshaPerla, http://eharsha.tk
*/
#include "gráficos.h"
#include "conio.h"
#include "stdlib.h"
void main()
{
int gd, gm;
DETECT
setfillstyle(1, 14);
barra(100, 100, 540, 380);
mientras(!kbhit())
{
ponerpixel(random(439)+101,
aleatorio(279)+101,aleatorio(16));
setcolor(random(16));
círculo(320,240,aleatorio(100));
}
getch();
cerrargráfica();
}
En la siguiente parte del artículo, Ranjith K. H. explicará sobre cómo añadir un ratón a
tu aplicación.Lee la Parte II
Háblenos sobre este artículo: Este es el primer artículo de este tutorial. Estamos planeando
expándelo. Para continuar, necesitamos tus sugerencias. La siguiente parte del artículo será
dependiendo de los comentarios que publiques. Dinos qué parte del artículo necesita ser
explicado más, cómo se puede elaborar más el artículo y cómo te hizo sentir el artículo.
Haz clic aquí para publicar un comentarioo envíame un correo electrónico:[email protected]
http://electrosofts.com/cgraphics/
En GUI como Windows, el ratón es muy importante para la interacción del usuario. Pero en DOS,
el ratón solo aparecerá en algunos de los programas. Si estás escribiendo
juegos DOS o programas de gráficos, puedes agregar funcionalidad de ratón a tu
código. Aquí está cómo hacerlo.
El mouse se puede utilizar en modo de texto así como en modo gráfico. Por lo general, es
utilizado en modo gráfico. Por lo tanto, primero debemos cambiar al modo gráfico. En
nuestro programa la función initgraph() es responsable de cambiar el modo de
text to graphics .DETECT es un macro definido en 'graphics.h'. Solicita
initgraph() para determinar automáticamente qué controlador gráfico cargar para
cambiar al modo de gráficos de la más alta resolución. La función initgraph() toma
tres parámetros, el controlador de gráficos, el modo de gráficos y la ruta al
archivo del controlador.
Una vez que el controlador ha sido cargado, initgraph() configura los valores numéricos de
el modo gráfico elegido en las variables gd y gm respectivamente. Aquí estamos
suponiendo que los archivos del controlador están en el directorio 'c:\tc\bgi'. Por lo tanto, la ruta
se pasó a initgraph() es 'c:\tc\bgi'.
Llamar con AX = 4
51 4 CX = coordenada x
coordenada y
Devoluciones: Nada
int llamarRaton()
{
en.x.ax=1;
int86(51,&in,&out);
retornar 1;
}
void mouseposi(int &xpos,int &ypos,int &click)
{
3
int86(51,&in,&out);
click=fuera.x.bx;
xpos=out.x.cx;
ypos=out.x.dx;
}
int ocultarRaton()
{
2;
int86(51,&in,&out);
return 1;
}
void setposi(int &xpos,int &ypos)
{
in.x.ax=4;
in.x.cx=xpos;
in.x.dx=ypos;
int86(51,&in,&out);
}
int main()
{
int x,y,cl,a,b;
clrscr();
int g=DETECT,m;
initgraph(&g,&m,"c:\tc\bgi");
a=100;
b=400;
setposi(a,b);
llamarmouse();
hacer
{
mouseposi(x,y,cl);
gotoxy(10,9);
printf("\n\tLa posición del ratón es: %d,%d",x,y);
Haz clic: %d
Presione cualquier tecla para ocultar el mouse
}mientras(!kbhit());
getch();
ocultar_mouse();
Presione cualquier tecla para salir
getch();
}
• llamargato( )
• mouseposi( )
• mousehide( )
• setposi( )
#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
unión REGS dentro, fuera;
int llamarRaton()
{
in.x.ax=1;
int86(51,&in,&out);
regresar 1;
}
void restringirpunteromouse(int x1,int y1,int x2,int y2)
{
in.x.ax=7;
in.x.cx=x1;
in.x.dx=x2;
int86(51,&in,&out);
in.x.ax=8;
in.x.cx=y1;
in.x.dx=y2;
int86(51,&in,&out);
}
int main()
{
int x,y,cl,a,b;
clrscr();
int g=DETECT,m;
initgraph(&g,&m,"c:\tc\bgi");
rectángulo(100,100,550,400);
llamarRatón();
res restringir_ptrratón(100,100,550,400);
getch();
}
• Horizontal ( )
• Vertical( )
Horizontal():- En esta función AX se establece en "7". Establece la barrera horizontal.
para el puntero que restringe el puntero del ratón a pasar ese límite. CX está siendo
cargado con la coordenada x mínima y Dx se ha cargado con la máxima
coordenada x.