NOTE: Please change the path in the initgraph() function as per your BGI directory.
Sample Output :
Program:
Sample Output :
Program:
#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<math.h>
#include"mouse.c"
void main()
{
int gd=DETECT,gm,i,c=15, x,y,b,errorcode,radius,Circle_flag,c1,c2,cex,cey,Paint_flag;
int Line_flag=1,Rect_flag,tlx,tly,brx,bry;
printf("\t\twww.shadowhackit.blogspot.com\n\n");
printf("ShadowHack's Paint Application\n");
printf("Instruction:\n");
printf("1. Use left click on left pane to select from the menus\n");
printf("2. Draw in the white box. \n");
printf("NOTE: This program is not yet completed...(Under Construction)\n");
printf("So FILL option in the menu will not work\n");
printf("Press any key to continue...\n");
getch();
// Graphics Initialisation
initgraph(&gd,&gm,"C:\\TurboC3\\BGI");
//Error Detection
errorcode=graphresult();
if(errorcode!=grOk)
printf("graphics error: \nYou might need to check the path of the BGI directory in initgraph()");
/** Code for menus starts **/
// For making Color Pallets
for(i=0;i<=15;i++)
{
rectangle(10,10*i,20,10+10*i);
setfillstyle(SOLID_FILL,i);
floodfill(12,10*i+2,WHITE);
}
rectangle(35,0,getmaxx(),getmaxy());
setfillstyle(LINE_FILL,WHITE);
//bar for 3mm linewidth
bar(10,170,20,180);
outtextxy(5,185,"3mm");
//bar for 3mm linewidth
bar(10,200,20,210);
outtextxy(5,215,"1mm");
// For circle
setfillstyle(CLOSE_DOT_FILL,WHITE);
bar(10,230,20,240);
outtextxy(0,245,"CIR");
//Paint Box
setfillstyle(INTERLEAVE_FILL,WHITE);
bar(10,260,20,270);
outtextxy(0,275,"Fill");
//Rectangle
setfillstyle(INTERLEAVE_FILL,WHITE);
bar(10,290,20,300);
outtextxy(0,305,"Rect");
//Reset
setfillstyle(SOLID_FILL,RED);
bar(10,320,20,330);
outtextxy(5,335,"CLR");
/** Code for menus starts **/
// for white backgorund
rectangle(35,0,getmaxx(),getmaxy());
setfillstyle(SOLID_FILL,WHITE);
floodfill(37,20,WHITE);
setcolor(BLACK);
// Untill a key is pressed
while(!kbhit()){
showmouseptr();
getmousepos(&x,&y,&b);
//****** Left Pane starts ******//
if(x>10&&x<20){
if(b==1)//Choose B=2 if you want to make the selections from menus using right click
{
// Color Selection
if(y<160)
{
hidemouseptr();
c=getpixel((int)x,(int)y);
setcolor(c);
}
// Set line Width=3mm
if(y>170&&y<180)
{
hidemouseptr();
setlinestyle(SOLID_LINE,1,3);
Line_flag=1;
Circle_flag=0;
Paint_flag=0;
Rect_flag=0;
showmouseptr();
}
// Set line Width=1mm
if(y>200&&y<210)
{
hidemouseptr();
setlinestyle(SOLID_LINE,1,1);
Line_flag=1;
Circle_flag=0;
Rect_flag=0;
Paint_flag=0;
showmouseptr();
}
//Selecting Circle
if(y>230&&y<240)
{
radius=20;
Circle_flag=1;
Paint_flag=0;
Line_flag=0;
Rect_flag=0;
}
//Selecting Paint Box
if(y>260&&y<270)
{
hidemouseptr();
sleep(.1);
Paint_flag=1;
Line_flag=0;
Circle_flag=0;
Rect_flag=0;
showmouseptr();
}
//Selcting Rectangle
if(y>290&&y<300)
{
hidemouseptr();
Rect_flag=1;
Paint_flag=0;
Line_flag=0;
Circle_flag=0;
showmouseptr();
}
//Reseting
if(y>320&&y<330)
{
hidemouseptr();
sleep(.1);
showmouseptr();
setfillstyle(SOLID_FILL,15);
bar(37,0,getmaxx()-2,getmaxy()-2);
rectangle(37,0,getmaxx()-2,getmaxy()-2);
}
}
}
// ******Left pane ends******
//Choosing Right Side to Draw
if((int)x>37&&x<getmaxx()-2&&y>2&& y<getmaxy()-2)
// ******Code for Left Click ****** // for making drawings
if(b==1){
// ** Line Code Starts **
if(Line_flag==1){
hidemouseptr();// this line of code is very important while mouse going in the upward direction
moveto((int)x,(int)y);
// keep drawing while left key is hold
while(b==1){
if((int)x>35)
lineto((int)x,(int)y);
getmousepos(&x,&y,&b);
}
}
//** Line Code Ends**
//** Circle Code Starts **
if(Circle_flag==1){
c1=x;
c2=y;
while(b==1){
getmousepos(&x,&y,&b);
radius=(int)sqrt((y-c2)*(y-c2)+(x-c1)*(x-c1));
if(c1-radius<37)// if while drawing circle we move out of bounds
// then the circle's radius will get restricted to the boundary
radius=c1-37;
}
hidemouseptr();
circle(c1,c2,radius);
showmouseptr();
}
//** Circle Code Ends**
//** Paint Box Code Starts**
// work on this section of code later
if(Paint_flag==1){
setfillstyle(SOLID_FILL,getcolor());
hidemouseptr();
floodfill(x,y,WHITE);
showmouseptr();
}
//** Paint Box Code Ends **
//** Rectangle Code Starts
if(Rect_flag==1)
{
tlx=x;
tly=y;
if(x>35)
while(b==1){
getmousepos(&x,&y,&b);
brx=x;
bry=y;
}
if(brx<35)
brx=36;
hidemouseptr();
rectangle(tlx,tly,brx,bry);
showmouseptr();
}
//** Rectangle Code Ends
}
//**** Left Click Code Ends ****
showmouseptr();
}
// ****** Key Hit Occured ******
getch();
}
//---- Main Ends -----



No comments:
Post a Comment