Вы находитесь на странице: 1из 14

Gráficos en wxDevCpp Por M.Sc.

Irma Prado

Gráficos en DevCpp
Para trabajar en el entorno gráfico, necesita tener instalada la librería winbgim de su
versión de DevCpp, o no funcionará.

Primero verifique tiene instalada la librería, de la siguiente manera:

1. Clic en archivo, nuevo, Proyecto:

2. Luego, con la barra de desplazamiento, buscar Console Graphics Application :

Si no encuentra, significa, que no lo tiene instalado, por lo que tiene que instalar el
archivo winbgim.exe . Busque en Internet, una versión acorde a la que está
utilizando con DevCpp e instale.
En los archivos de la semana del aula virtual, tiene una opción que puede
descargarla e instalarla. Se instala haciendo clic en el archivo winbgim.exe.
Gráficos en wxDevCpp Por M.Sc. Irma Prado

Programación de gráficos en DevCpp:


Cuando se trabaja con gráficos, se pasa a trabajar con alta resolución, es decir de trabajar
en una pantalla con caracteres como letras y números se pasa a trabajar con pixeles. Un
pixel es la menor unidad homogénea en color. Entonces cuando se trabaja con gráficos se pasa de
pantalla en modo texto a pantalla modo gráfico o viceversa frecuentemente.

Pantalla de modo gráfico, cambia la resolución:

Ahora cada vez que quiera realizar un programa con soporte para gráficos solo es
necesario seguir los siguientes pasos:

1 - Crear un nuevo proyecto

2 - Seleccionar una aplicación de consola con gráficos


Gráficos en wxDevCpp Por M.Sc. Irma Prado

Luego de ok escriba el nombre del proyecto y guardar. Despúes puede realizar su


programa de gráficos en pantalla.

Inicialmente aparece en pantalla un ejemplo en modo gráfico del manejo del mouse,
borre el código o puede crear otro archivo vacío del mismo proyecto

Ejemplo 0.- Copie el siguiente código, luego salvar haciendo clic en el ícono del disquete:

#include <winbgim.h>
//using namespace std;
main()
{
initwindow(400,300); // Abre una ventana gráfica de 400x300 pixeles
moveto(0,0); // Pone el cursor en 0,0 ( no se ve)
lineto(250,50); // Dibuja una línea desde 0,0 donde quedó el cursor, hasta 50,50
circle(250,150,30); //dibuja un circulo en la columna250,fila150, con radio de 30
while(!kbhit()); // Espera a que el usuario presione una tecla
closegraph(); // Cierra la ventana gráfica
}

Ejemplo 1.- varios dibujos

//Ejemplo del uso de la librería winbgim


//Dibujo de un rectángulo, un circulo y un cuadrado
#include<winbgim.h>
#include<stdlib.h>
Using namespace std;
Gráficos en wxDevCpp Por M.Sc. Irma Prado

main()
{
initwindow(640,480);
circle(100,100,30);
moveto(50,50);
lineto(100,50);
lineto(100,100);
lineto(50,100);
lineto(50,50);
rectangle(100,100,200,200);
system("pause");
while(!kbhit());
closegraph();
}

Funciones principales de la librería winbgim.h

Función Tarea
void circle (int x, int y, int radius); Dibuja un circulo en x,y de radio radius
void cleardevice (void); Borra la pantalla
void line (int x1, int y1, int x2, int y2); Traza una línea desde x1,y1 hasta x2,y2
Traza una línea desde la posición actual de
void lineto (int x, int y)
cursor hasta x,y
void putpixel (int x, int y, int color); Dibuja un pixel en x,y de color color
void rectangle (int left, int top, int right, int Dibuja un rectangulo de esquenas top,left y
bottom); right,bottom
void setcolor (int color); Establece el color actual.
Retorna la coordenada x del Mouse relativa
int mousex(void)
a la esquina superior izquierda
Retorna la coordenada y del Mouse relativa
int mousey(void)
a la esquina superior izquierda

Ejemplo 2.- dibuja un Círculo

//Ejemplo del uso de la librería winbgim


#include<winbgim.h>
#include<iostream>
using namespace std;
main()
{
Gráficos en wxDevCpp Por M.Sc. Irma Prado

int x,y,r;
do{
cout<<"valor de x? ";
cin>>x;
}while(x<=50); //no negativos y como mínimo 50
do{
cout<<"valor de y? ";
cin>>y;
}while(y<=50); //idem
do{
cout<<" Radio? ";
cin>>r;
}while(r<=50);
initwindow(640,480);
setcolor(5); //agregamos un color
circle(x,y,r);
while(!kbhit()); //esperamos hasta que digiten una tecla
closegraph();
}

Ejemplo 3.- Varios círculos

//Ejemplo del uso de la librería winbgim


#include<winbgim.h>
#include<iostream>
using namespace std;
main()
{
int j=1;
initwindow(600,700);
for(int i=1;i<=1000;i=i+20)
{ j++;
setcolor(j); //agregamos un color
circle(300,350,i);
if(j==10) j=1; //suponiendo que tiene 10mcolores su máquina
}
while(!kbhit()); //esperamos hasta que digiten una tecla
closegraph();

Ejemplo 4.- Universo

#include<iostream>
using namespace std;
main()
Gráficos en wxDevCpp Por M.Sc. Irma Prado

{
int x,y,c;
initwindow(600,700);
for(int i=1;i<=5000;i++)
{
do{
x=rand();
}while(x>600); //ancho de la pantalla 600
do{
y=rand();
}while(y>700); //alto de la pantalla
do{
c=rand();
}while(c>20); //hasta 20 colores
putpixel(x,y,c);
}
while(!kbhit()); //esperamos hasta que digiten una tecla
closegraph();
}

Ejemplo 5.- Tipos y estilos de letra

//Ejemplo del uso de la librería winbgim


#include<winbgim.h>
#include<iostream>
using namespace std;
main()
{

initwindow(600,700);
setcolor(5);
settextstyle(11,3,33); //tipo de letra, direccion, tamaño
outtextxy(250,200,"viva Bolivia");
setcolor(3);
settextstyle(7,0,2);
outtextxy(100,150,"toda la vida");
settextstyle(7,1,6);
outtextxy(300,300,"Amigo mio ");
while(!kbhit()); //esperamos hasta que digiten una tecla
closegraph();
}

Ejemplo 6.- tipos de líneas


Gráficos en wxDevCpp Por M.Sc. Irma Prado

//Ejemplo del uso de la librería winbgim


#include<winbgim.h>
#include<iostream>
using namespace std;
main()
{
initwindow(600,700);
moveto(50,60); //ubicamos el puntero en la posición 50,60
lineto(100,200); //trazamos una línea desde el punto anterior hasta 100,200
setcolor(4); //cambiamos color
line(300,10,300,400);
setlinestyle(4,2,3); //tipo de linea, ?,alto del caracter
setcolor(2); //para línea punteada verde
line(20,400,390,400);
while(!kbhit()); //esperamos hasta que digiten una tecla
closegraph();
}

Ejemplo 7.- Dibujo de una elipse

//Ejemplo del uso de la librería winbgim


#include<winbgim.h>
#include<iostream>
using namespace std;
main()
{
initwindow(600,700);
setcolor(5);
ellipse(200,300,0,360,100,250);
//xcentro,ycentro,angulo inicial,angulo final,radio en x,radio en y
while(!kbhit()); //esperamos hasta que digiten una tecla
closegraph();
}

Ejemplo 8.- función arco

//Ejemplo del uso de la librería winbgim


#include<winbgim.h>
#include<iostream>
using namespace std;
main()
{

initwindow(600,700);
Gráficos en wxDevCpp Por M.Sc. Irma Prado

setcolor(5);
arc(200,400,0,110,120);//xcentro,ycentro,angulo inicial,angulo final,radio en x
while(!kbhit()); //esperamos hasta que digiten una tecla
closegraph();
}

Ejemplo 9.- barras

//Ejemplo del uso de la librería winbgim


#include<winbgim.h>
#include<iostream>
using namespace std;
main()
{

initwindow(600,700);
setfillstyle(11,2); //tipo de relleno, color que no pasa
bar(100,200,250,300); //una barra colorida, se dan puntos extremos
while(!kbhit()); //esperamos hasta que digiten una tecla
closegraph();
}

Ejemplo 10.- Barras 3d

//Ejemplo del uso de la librería winbgim


#include<winbgim.h>
#include<iostream>
using namespace std;
main()
{
initwindow(600,700);
setfillstyle(11,2); //tipo de relleno, color que no pasa
bar3d(100,200,250,300,40,true);
//una barra colorida, se dan puntos extremos, profundidad,true para cerrado
while(!kbhit()); //esperamos hasta que digiten una tecla
closegraph();
}

Ejemplo 11.- rellenos

//Ejemplo del uso de la librería winbgim


#include<winbgim.h>
#include<iostream>
using namespace std;
Gráficos en wxDevCpp Por M.Sc. Irma Prado

main()
{
initwindow(600,700);
setcolor(2);
circle(200,300,100); //circulo
setfillstyle(11,2); //tipo de relleno, color q
floodfill(200,300,2); //punto donde inicia a pintar y color que no pasa sobreescribe
while(!kbhit());
setfillstyle(4,6); //tipo de relleno, color
floodfill(2,1,2); //x,y y color que no sobreescribe
system("pause"); //esperamos hasta que digiten una tecla
closegraph();
}

Colores de setcolor: Argumento de la función setcolor(i), donde el valor de i es:

0 || BLACK
1 || BLUE
2 || GREEN
3 || CYAN
4 || RED
5 || MAGENTA
6 || BROWN
7 || LIGHTGRAY
8 || DARKGRAY
9 || LIGHTBLUE
10 || LIGHTGREEN
11 || LIGHTCYAN
12 || LIGHTRED
13 || LIGHTMAGENTA
14 || YELLOW
15 || WHITE

Ejemplo 12.- varios

//Ejemplo del uso de la librería winbgim


//Gráfica de sen(x) //sin eje de coordenadas
#include<winbgim.h>
#include<stdlib.h>
#include<math.h>
using namespace std;
main()
{
Gráficos en wxDevCpp Por M.Sc. Irma Prado

const float pi=3.1415;


initwindow(640,480);
for (int x=0;x<640;x++)
putpixel(x,100+50*sin(2*pi*(float)x/640),WHITE);
while(!kbhit());
closegraph();
}

Ejemplo 13.- ¿qué hace?

//Ejemplo del uso de la librería winbgim


//Dibujar con el mouse
#include<winbgim.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
main()
{
const float pi=3.1415;
initwindow(640,480);
int a=0,x,y;
while(a==0)
{
x=mousex( );
delay(1);
y=mousey( );
delay(1);
if (sw==0) {moveto(x,y);
sw=1;}
lineto(x,y);
};
system("pause");
closegraph();
}

Ejemplo 14.- ¿qué hace?

//Ejemplo del uso de la librería winbgim


//Pinta toda la pantalla con colores rgb
#include<winbgim.h>
#include<stdlib.h>
#include<iostream>
Gráficos en wxDevCpp Por M.Sc. Irma Prado

using namespace std;


main()
{
int azul;
const float pi=3.1415;
cout << "Valor para el azul? ";
cin >> azul;
initwindow(255,255);
for (int y=1;y<255;y++)
for(int x=1;x<256;x++)
putpixel(x,y,COLOR(x,y,0));
system("pause");
closegraph();
}

Ejemplo 14.- Seguimos dibujando

#include<winbgim.h>
#include<stdlib.h>
#include<iostream>
///varios circulos
using namespace std;
main()
{
int n,r=50;
cout << "total de circulos? ";
cin >> n;
initwindow(400,400);
setcolor(4);
settextstyle(3,0,4);
outtextxy(10,50,"circulos concentricos");
for (int y=1;y<=n;y++)
{ setcolor(y);
circle(200,200,r);
r=r+30;
}
system("pause");
closegraph();
}

Ejemplo 15.-

//---------------------------------------------------------------------------------
Gráficos en wxDevCpp Por M.Sc. Irma Prado

#include<winbgim.h>
#include<stdlib.h>
#include<iostream>
//programa oara graficar una recta y=x+5
using namespace std;
main()
{

initwindow(400,400);
//eje x e y
int y,x1,y1;
setcolor(9);
moveto(200,0);
lineto(200,400);
moveto(0,200);
lineto(400,200);
//el centro en la pantalla es 200,200
setcolor(2);
for (int x=-100;x<=100;x++)
{
y=x+5;
if (x==-100) moveto(x+200,200-y); //ubica el cursor en la primera posicion
lineto(x+200,200-y);
}
while(!kbhit());
closegraph();
}

Ejemplo 16.-(especial para el proyecto)

#include <winbgim.h>
#include<iostream>
/* programa util para el ahorcado*/
using namespace std;
int main()
{ int ventana_g1;
int opcion=0;
initwindow(500,500); //habilitamos una ventana de graficos
ventana_g1=getgraphmode();
setwindowtitle("Ventana menu de opciones ");
do{
Gráficos en wxDevCpp Por M.Sc. Irma Prado

clearviewport(); //limpia la ventana de graficos


settextstyle(0,0,3);
setcolor(RED);
outtextxy(30,50,"Graficos");
setcolor(GREEN);
outtextxy(20,90,"1.-Rectangulo");
outtextxy(20,120,"2.-Circulo");
outtextxy(20,150,"3.-Salir");
settextstyle(0,0,2);
setcolor(RED);
outtextxy(20,180,"Su opcion?");
delay(100);
restorecrtmode();//regresamos a la pantalla de texto para recibir el dato
cin>>opcion;

switch (opcion){
case 1: setgraphmode(ventana_g1); //regresamos a la ventana de graficos
setcolor(RED);
outtextxy(200,180,"1");
setcolor(BLUE);
setlinestyle(3,2,4);
rectangle(50,250,430,450);
setcolor(MAGENTA);
outtextxy(150,230,"RECTANGULO");
settextstyle(0,0,1);
delay(100);
// outtextxy(20,470,"digite una tecla para continuar...");
break;
case 2: setgraphmode(ventana_g1); //regresamos a la ventana de graficos
outtextxy(200,180,"2");
setcolor(BLUE);
setlinestyle(3,2,4);
circle(250,350,60);
setcolor(MAGENTA);
outtextxy(200,230,"CIRCULO");
settextstyle(0,0,1);
delay(100);
// outtextxy(20,480,"digite una tecla para continuar...");
Gráficos en wxDevCpp Por M.Sc. Irma Prado

break;
}
if(opcion!=3)
system("pause");
}while(opcion!=3);
closegraph(); //close graphics window
return 0
}

Ejemplo 17.- Movimiento con captura .

#include<winbgim.h>

using namespace std;


main()
{
void *p; //variable puntero
initwindow(700,700);
setcolor(2);
circle(200,300,100); //circulo
setfillstyle(11,2); //tipo de relleno, color q
floodfill(200,300,2); //punto donde inicia a pintar y color que no pasa sobreescribe

//proceso de captura
//rectangle(90,190,310,410); //importante para saber qué se está capturando
getimage(90,190,310,410,p);
clearviewport(); //limpia pantalla en modo gráfico

//reproduce la imagen capturada


for(int x=50;x<600;x=x+20)
putimage(x,450,p,1);

while(!kbhit());
closegraph();
}

Вам также может понравиться