Problemas al dibujar un cuadro con el Mouse en Turbo C

Tengo el siguiente código acerca de un programa que estoy haciendo similar al paint... Por lo pronto solo puedo dibujar cuadritos de un solo tamaño por todos lados de mi pantalla en modo gráfico. Es solo que no se como hacer para que se hagan cuadros de cualquier tamaño y figuras como círculos, estrellas, y cosas por el estilo.
Estoy algo angustiado porque ya le intente de muchas formas...
El programa que hace cuadros se llama void cuadro()
Y lo mando a llamar desde el programa void selecciona()
Ya casi en la parte final.
La cosa esta en que no se como obtener mis coordenadas en por y en y dando un clic y guardar esos valores de X1 y Y1
Y como guardar los valores en X2 y Y2 Para así trazar cuadros y figuras de cualquier tamaño, Me dijeron que tengo que hacer un do while para que se haga por dos ocasiones y así tome las coordenadas de los dos clic y después traze la figura deseada.
Con este código si me explican como obtener las coordenadas en por y en Y
Por favor
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#include <graphics.h>
#include <string.h>
#include <ctype.h>
int N[32][32];
struct registro {
    char  nombre[15];
    int   pixel[435];
    int edo;
    } R ;
  FILE *arch;
void mouse(int &a,int &b,int &c,int &d )
{
 union REGS inregs, outregs;
 inregs.x.ax  =  a;
 inregs.x.bx  =  b;
 inregs.x.cx  =  c;
 inregs.x.dx  =  d;
 int86( '\x33' , &inregs, &outregs );
 a = outregs.x.ax ;
 b = outregs.x.bx ;
 c = outregs.x.cx ;
 d = outregs.x.dx ;
}
void activa()
{  int a=0,b,c,d;
   mouse(a,b,c,d);
}
void pon()
{  int a=1,b,c,d;
   mouse(a,b,c,d);
}
void quita()
{  int a=2,b,c,d;
   mouse(a,b,c,d);
}
void mcoord ( int &a, int &b, int &x, int &y )
{
   mouse(a,b,x,y);
}
void mgoto( int x, int y )
{  int a=4,b;
   mouse(a,b,x,y);
}
void columnas ( int low, int hi )
{  int a=7,b;
   mouse(a,b,low,hi);
}
void renglones ( int low, int hi )
{  int a=8,b;
   mouse(a,b,low,hi);
}
void inicializa()
{ int gd=DETECT, gm ;
  initgraph(&gd,&gm, "C:\\TC\\BGI");
}
void cuadro(int x, int y, int color) /*color*/
{
 quita();
 setcolor(color);
 setfillstyle(1,color)
 rectangle(x,y,x+20,y+20);
 pon();
}
void box(int x1,int y1,int x2,int y2,int relleno,int color)
{
 int poly[8];
 poly[0]=x1;
 poly[1]=y1;
 poly[2]=x2;
 poly[3]=y1;
 poly[4]=x2;
 poly[5]=y2;
 poly[6]=x1;
 poly[7]=y2;
 setfillstyle (relleno,color);
 fillpoly (4,poly);
}
void silueta()
{ int i,j;
 quita();
 clearviewport();
 clearviewport();
 box(0,0,100,480,10,BLUE);    //LIENZO AZUL
 box(0,450,680,480,10,BLUE);    //LIENZO AZUL
 box(0,0,680,15,2,BLUE);    //BARRA DE TITULO
 outtextxy(10,2,"Sin titulo - Graficador con Mouse");
 outtextxy(625,2,"X");
 box(100,15,680,450,1,WHITE); //LIENZO BLANCO
 settextstyle(2,0,0);
 box(10,50,90,30,1,LIGHTBLUE); outtextxy(15,34,"¯¯ Archivo");
 box(10,70,90,50,1,LIGHTBLUE); outtextxy(15,54,"¯¯ Edici¢n");
 box(10,90,90,70,1,LIGHTBLUE); outtextxy(15,74,"¯¯ Ver");
 box(10,110,90,90,1,LIGHTBLUE); outtextxy(15,94,"¯¯ Imagen");
 box(10,130,90,110,1,LIGHTBLUE); outtextxy(15,114,"¯¯ Colores");
 box(10,150,90,130,1,LIGHTBLUE); outtextxy(15,134,"¯¯ Ayuda");
 box(10,200,50,170,1,LIGHTBLUE); box(50,200,90,170,1,LIGHTBLUE);
 box(10,230,50,200,1,LIGHTBLUE); box(50,230,90,200,1,LIGHTBLUE);
 box(10,260,50,230,1,LIGHTBLUE); box(50,260,90,230,1,LIGHTBLUE);
 box(10,290,50,260,1,LIGHTBLUE); box(50,290,90,260,1,LIGHTBLUE);
 box(10,320,50,290,1,LIGHTBLUE); box(50,320,90,290,1,LIGHTBLUE);
 for(i=0;i<6; i++)   //COLORES
  for(j=0;j<3; j++)
   box(10+j*23.333333,300+i*23.333333,33.333333+j*23.333333,323.333333+i*23.333333,1,j+1); //COLORES
 for(i=0;i<4; i++)   //BARRA DE HERRAMIENTAS
  for(j=0;j<2; j++)
   box(10+j*35,155+i*35,45+j*35,190+i*35,1,1);
 line(15,185,40,160); //DIBUJAR UNA LINEA
 bar3d(50,185,75,160,0,0); //DIBUJAR UN CUADRADO
 circle(28,208,10); //DIBUJAR CIRCULO
 pon();
}
void archivo()  //Z1
{ int z,z1;
z=0;
z1=1;
 box(0,450,679,479,1,BLUE);    //LIENZO AZUL
 box(10,455,80,475,1,LIGHTBLUE); outtextxy(15,460,"®® Nuevo");
 box(80,455,150,475,1,LIGHTBLUE); outtextxy(85,460,"®® Abrir");
 box(150,455,220,475,1,LIGHTBLUE); outtextxy(155,460,"®® Guardar");
 box(220,455,290,475,1,LIGHTBLUE); outtextxy(225,460,"®® Vista P");
// box(290,455,360,475,1,LIGHTBLUE); outtextxy(295,460,"®® Salir");
z1=0;
z=1;
}
void edicion()  //Z2
{ int z,z2;
z=0;
z2=1;
 box(0,450,680,480,1,BLUE); //LIENZO AZUL
 box(10,455,80,475,1,LIGHTBLUE); outtextxy(15,460,"®® Cortar");
 box(80,455,150,475,1,LIGHTBLUE); outtextxy(85,460,"®® Copiar");
 box(150,455,220,475,1,LIGHTBLUE); outtextxy(155,460,"®® Pegar");
 box(220,455,290,475,1,LIGHTBLUE); outtextxy(225,460,"®® Borrar T");
// box(290,455,360,475,1,LIGHTBLUE); outtextxy(295,460,"®® ");
z2=0;
z=1;
}
void ver()  //Z3
{ int z,z3;
z=0;
z3=1;
 box(0,450,680,480,1,BLUE);    //LIENZO AZUL
 box(10,455,80,475,1,LIGHTBLUE); outtextxy(15,460,"®® Regresar");
// box(80,455,150,475,1,LIGHTBLUE); outtextxy(85,460,"®® ");
// box(150,455,220,475,1,LIGHTBLUE); outtextxy(155,460,"®® ");
// box(220,455,290,475,1,LIGHTBLUE); outtextxy(225,460,"®® ");
// box(290,455,360,475,1,LIGHTBLUE); outtextxy(295,460,"®® ");
z3=0;
z=1;
}
void imagen()  //Z4
{ int z,z4;
z=0;
z4=1;
 box(0,450,680,480,10,BLUE);    //LIENZO AZUL
 box(10,455,80,475,1,LIGHTBLUE); outtextxy(15,460,"®® Girar");
 box(80,455,150,475,1,LIGHTBLUE); outtextxy(85,460,"®® Atributos");
 box(150,455,220,475,1,LIGHTBLUE); outtextxy(155,460,"®® Marca A");
// box(220,455,290,475,1,LIGHTBLUE); outtextxy(225,460,"®® ");
// box(290,455,360,475,1,LIGHTBLUE);...

1 respuesta

Respuesta
-1
Sy lo que deseas son gráficos, programar en c++ turbo no es una buena opción..!
ya que este programa no corre la libreria:  #include <graphics.h>
Puedes probarlo en borlan c++ (yo no o eh hecho)
Suerte..! 1 bye bye...!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas