p align="left">void cut(); void copy(); void paste(); void changer(int); void say(char *); void filemenu(); void editmenu(); void start() { m.hidemouseptr(); openwindow(0,0,639,479,title,1,1,1,3,9); buttonon(5,20,35,35,"File",4); buttonon(40,20,70,35,"Edit",4); buttonon(75,20,105,35,"View",4); buttonon(110,20,145,35,"About",3); setfillstyle(1,15); // defining buttons *!* ba(0,0,0,0,0); ba(5,20,35,35,1); ba(40,20,70,35,2); ba(75,20,105,35,3); ba(110,20,145,35,4); bar(100,50,635,450); char *labels[]={"Paint","Draw","Line","ellipse","Box","Text","Spray","Inv.Col","Cut","Copy","Paste","Select","Erase","H.flip","V.flip","Font","Filler","S.Save","Change","BMP","",""}; int cnta=0; int tools=5; for(int cnt=50;cnt<=300;cnt+=20) { buttonon(5,cnt,45,cnt+15,labels[cnta],3); ba(5,cnt,45,cnt+15,tools); tools++; buttonon(50,cnt,95,cnt+15,labels[cnta+1],3); ba(50,cnt,95,cnt+15,tools);tools++; if(cnta<20) {cnta+=2;} } setfillstyle(1,4); bar(5,320,85,370); buttonclick(5,320,85,370); settextstyle(4,0,2);outtextxy(11,330,"Imager");settextstyle(2,0,4); int cl=0; for(int cntb=400;cntb<=410;cntb+=10) { for(int cntc=5;cntc<=80;cntc+=10) { setfillstyle(1,cl); bar(cntc,cntb,cntc+10,cntb+10); if(cl<=15) { cl++;} } } setfillstyle(1,0); bar(5,430,85,450); /*buttonon(25,455,70,470,"Modify",5);*/ ba(639-13,3,639-3,12,31); ba(5,400,85,420,32); ba(100,50,635,450,33); ofstream o("ccp.dat"); o<<0<<endl<<0; o.close(); m.showmouseptr(); /*music("imager3.snd");*/ } void ba(int x1,int y1,int x2,int y2,int n) { buttons[n][0]=x1; buttons[n][1]=y1; buttons[n][2]=x2; buttons[n][3]=y2; } int imagearea() { m.getmousepos(button,x,y); if((x>100)&&(y>50)&&(x<635)&&(y<450)) {return(1);} else {return(0);} } void myrect(int x1,int y1,int x2,int y2) { line(x1,y1,x2,y1); line(x1,y1,x1,y2); line(x1,y2,x2,y2); line(x2,y1,x2,y2); } void back(int x1,int y1,int x2,int y2,int mode) { int ch;char c2; if(mode==0) { ofstream outfile("im~temp.dat"); for(int a=x1;a<=x2;a++) { for(int b=y1;b<=y2;b++) { ch=getpixel(a,b); outfile<<(char)(ch+28); } } outfile.close(); } else if(mode==1) { ifstream infile("im~temp.dat"); for(int a=x1;a<=x2;a++) { for(int b=y1;b<=y2;b++) { infile.get(c2);ch=(int)c2; putpixel(a,b,ch-28); } } infile.close(); } } void fillwindow() { m.hidemouseptr(); back(200,150,350,200,0); openwindow(200,150,350,200,"Filler",1,6,2,7,10); buttonon(210,183,240,198,"ON",4); ba(210,183,240,198,34); buttonon(300,183,330,198,"OFF",4); ba(300,183,330,198,35); m.showmouseptr(); loop(34,35); m.hidemouseptr(); back(200,150,350,200,1); loopmain=1; m.showmouseptr(); } void fontwindow() { m.hidemouseptr(); back(200,100,405,350,0); openwindow(200,100,405,350,"Choose Fonts",1,4,0,7,12); settextstyle(2,HORIZ_DIR,4); for(int a=0;a<=11;a+=2) { if((a==9)||(a==10)) {settextstyle(3,HORIZ_DIR,1);} else{settextstyle(a,HORIZ_DIR,1);} buttonon(205,120+((a/2)*30),300,120+25+((a/2)*30),"Imager",2); ba(205,120+((a/2)*30),300,120+25+((a/2)*30),37+a); if((a+1==9)||(a+1==10)) {settextstyle(3,HORIZ_DIR,1);} else{settextstyle(a+1,HORIZ_DIR,1);} buttonon(305,120+((a/2)*30),400,120+25+((a/2)*30),"Imager",2); ba(305,120+((a/2)*30),400,120+25+((a/2)*30),37+a+1); } int lb=0;char *t[]={"1","2","3","4","5","6","7","8","9","10"}; settextstyle(2,0,4); for(a=205;a<=355;a+=16) { /*t='9'-(char)lb; outtextxy(a+12,330,t);*/ buttonon(a,330,a+15,345,t[lb],2); ba(a,330,a+15,345,48+lb+1); lb++; } m.showmouseptr(); loop(37,58); loopmain=1; fontwc=0; m.hidemouseptr(); back(200,100,405,350,1); m.showmouseptr(); } void aboutwindow() { m.hidemouseptr(); back(200,100,450,200,0); openwindow(200,100,450,200,title,1,4,0,7,0); settextstyle(2,HORIZ_DIR,4); setcolor(14); outtextxy(205,115,"Imager 3.1"); outtextxy(205,130," Made by Ankit Rohatgi"); outtextxy(205,145," www.ankitrohatgi.com"); m.showmouseptr(); m.getmousepos(button,x,y); while(button==0) { m.getmousepos(button,x,y); } m.hidemouseptr(); back(200,100,450,200,1); m.showmouseptr(); } void toolset(int no) { m.hidemouseptr(); for(int cnt=50;cnt<=300;cnt+=20) { buttoneffect(5,cnt,45,cnt+15); buttoneffect(50,cnt,95,cnt+15); } buttoneffect(5,20,35,35); buttoneffect(40,20,70,35); buttoneffect(75,20,105,35); buttoneffect(110,20,145,35); buttonclick(buttons[no][0],buttons[no][1],buttons[no][2],buttons[no][3]); m.showmouseptr(); } void lift(int no) { m.hidemouseptr(); buttoneffect(buttons[no][0],buttons[no][1],buttons[no][2],buttons[no][3]); m.showmouseptr(); } void invertcolors() { int cl; for(int a=100;a<=635;a++) { for(int b=50;b<=450;b++) { cl=getpixel(a,b); putpixel(a,b,15-cl); } } } void fliphorizontal() { int c1,c2; for(int a=0;a<=267;a++) { for(int b=50;b<=450;b++) { c1=getpixel(101+a,b); c2=getpixel(634-a,b); putpixel(101+a,b,c2); putpixel(634-a,b,c1); } } } void flipvertical() { int c1,c2; for(int b=0;b<=200;b++) { for(int a=100;a<=635;a++) { c1=getpixel(a,50+b); c2=getpixel(a,450-b); putpixel(a,50+b,c2); putpixel(a,450-b,c1); } } } void filemenu() { char *filem[]={"New","Open","Save","Save As","Exit"}; m.hidemouseptr(); back(5,40,70,140,0); menu(5,40,filem,5,7); m.showmouseptr(); m.getmousepos(button,x,y); int lc=1,mc=0; while((x>5)&&(y>20)&&(x<60)&&(y<140)&&(lc==1)) { m.getmousepos(button,x,y); if(button==1) { if((y>40)&&(y<55)) { setfillstyle(1,15);bar(100,50,635,450);lc=0; savename="tempo.dat";} else if((y>55)&&(y<75)) {lc=0;mc=1; m.hidemouseptr(); back(5,40,70,140,1);lift(1); m.showmouseptr(); textgetter("Open-filename"); if(yotext[0]=='\0') {goto bop;} loadimage(100,50,yotext); /*BMPload(100,50,yotext);*/ savename=yotext; bop: } else if((y>75)&&(y<90)) { lc=0;mc=1; m.hidemouseptr(); back(5,40,70,140,1);lift(1); m.showmouseptr(); saveimage(100,50,635,450,savename); /*BMPsave(100,50,635,450,savename);*/ } else if((y>90)&&(y<105)) { lc=0;mc=1; m.hidemouseptr(); back(5,40,70,140,1);lift(1); m.showmouseptr(); textgetter("Save As-filename"); if(yotext[0]=='\0') {goto bosa;} saveimage(100,50,635,450,yotext); /*BMPsave(100,50,635,450,yotext);*/ savename=yotext; bosa: } else if((y>105)&&(y<120)) {closegraph();exit(1);} } } if(mc==0) { m.hidemouseptr(); back(5,40,70,140,1);lift(1); m.showmouseptr();} } void editmenu() { char *editm[]={"Cut","Copy","Paste"}; m.hidemouseptr(); back(40,35,85,90,0); menu(40,35,editm,3,5); m.showmouseptr(); m.getmousepos(button,x,y); int lc=1; delay(50); while((x>40)&&(y>20)&&(x<85)&&(y<90)&&(lc==1)) { m.getmousepos(button,x,y); if(button==1) { if((y>40)&&(y<55)) {cut();lc=0;} else if((y>55)&&(y<70)) {copy();lc=0;} else if((y>70)&&(y<85)) {paste();lc=0;} } } m.hidemouseptr(); back(40,35,85,90,1); lift(2); m.showmouseptr(); } void cut() { setfillstyle(1,15);bar(select[0],select[1],select[2],select[3]);lift(13); } void copy() { backtotal(select[0],select[1],select[2],select[3],0);lift(14); } void paste() { backtotal(select[0],select[1],select[2],select[3],1);lift(15); } void backtotal(int x1,int y1,int x2,int y2,int mode) { int ch,width,height;char c2; if(mode==0) { ofstream outfile("ccp.dat"); outfile<<x2-x1<<endl<<y2-y1<<endl; for(int a=x1;a<=x2;a++) { for(int b=y1;b<=y2;b++) { ch=getpixel(a,b); outfile<<(char)(ch+28); } } outfile.close(); } else if(mode==1) { setviewport(100,50,635,450,1); ifstream infile("ccp.dat"); infile>>width>>height; for(int a=0;a<=width;a++) { for(int b=0;b<=height;b++) { infile.get(c2);ch=(int)c2; putpixel(a+x1-100,b+y1-50,ch-28); } } infile.close(); setviewport(0,0,639,479,1); } } void textgetter(char quest[]) { m.hidemouseptr(); back(150,100,400,150,0); openwindow(150,100,400,150,quest,1); textfield(155,118,30); m.showmouseptr(); setcolor(0); settextstyle(2,0,4); int xcn=0;int in2=0; char in[2]; in[1]='\0'; /*textcolor(4);gotoxy(23,9);gets(yotext);*/ while(*in!=(char)13) { st: in[0]=getch(); if(in[0]==(char)13) { break; } else if(in[0]==(char)8) {in2-=6;xcn--;sound(900);nosound();setfillstyle(1,15);bar(158+in2,120,158+in2+textwidth("W"),120+textheight("Wg"));goto st;} setfillstyle(1,15);bar(158+in2,120,158+in2+textwidth(in),120+textheight(in)); if(in2<=0) {in2=0;} if(in2>=240) {in2=240;} outtextxy(158+in2,120,in); in2+=6; yotext[xcn]=in[0]; xcn++; } yotext[xcn]='\0'; /*cout<<yotext;*/ m.hidemouseptr(); back(150,100,400,150,1); m.showmouseptr(); } void saveimage(int x1,int y1,int x2,int y2,char filename[]) { int ch,width,height;char c2; ofstream outfile(filename); outfile<<x2-x1<<endl<<y2-y1<<endl; for(int a=x1;a<=x2;a++) { for(int b=y1;b<=y2;b++) { ch=getpixel(a,b); outfile<<(char)(ch+28); } } outfile.close(); } void loadimage(int x1,int y1,char filename[]) { char c2;int width,height,ch; ifstream infile(filename); if(infile) { setviewport(100,50,635,450,1); infile>>width>>height; for(int a=0;a<=width;a++) { for(int b=0;b<=height;b++) { infile.get(c2);ch=(int)c2; putpixel(a+x1-100,b+y1-50,ch-28); } } setviewport(0,0,639,479,1); } else { say("file not found");} infile.close(); } void changer(int col) { for(int a=100;a<=635;a++) { for(int b=50;b<=450;b++) { if(col==getpixel(a,b)) { putpixel(a,b,icolor); } } } } void say(char text[]) { m.hidemouseptr(); settextstyle(2,0,4); int width=textwidth(text)+20; int height=60; back(150,100,150+width,100+height,0); openwindow(150,100,150+width,100+height,title); setcolor(0); buttonon(160,100+height-17,180,100+height-2,"OK",3); setcolor(0); outtextxy(160,120,text); m.showmouseptr(); int lc=1; while(lc==1) { m.getmousepos(button,x,y); if((x>160)&&(x<180)&&(y>100+height-17)&&(y<100+height-2)&&(button==1)) { lc=0; } } m.hidemouseptr(); back(150,100,150+width,100+height,1); m.showmouseptr(); delay(90); } Висновки В роботі були проаналізовані питання відносно теоретичної основи побудови програм з простим інтерфейсом користувача а також проблеми, які виникають при цьому. Результатом цього є розроблений програмний комплекс для роботи з візитними картками (розробка, та адміністрування). Зауважимо лише, що при цьому використовувалися готові функції для роботи з графікою. Програма відрізняється від існуючих на ринку простотою інтерфейсу і настроювань. Література Касаткин А.И., Вальвачев А.Н. Профессиональное прогрпммирование на языке Си. Мн., 1992. 240 С. Нейбауэр А. Моя первая программа на С/С++. П., 1995. 368 С. Бруно Бабэ. Просто и ясно о Borland C++. М., 1996. 400 С. Шамас Н.К. Основы С++ и обьектно-ориентированного программирования. К., 1996. 448 С. Справочник по классам Borland C++ 4.0. К., 1994. 256 С. ObjectWindows для C++. К., 1993., 208 С. Том Сван. Программирование для Windows в Borland C++. М., 480 С. Н. Барканати. Программирование игр для Windows на Borland C++. М., 1994. 512 С.
Страницы: 1, 2, 3, 4
|