版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、#include<graphics.h>#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<dos.h>#include<bios.h>#include<math.h>#include<alloc.h>/*定義常量*/*向上翻頁(yè)移鍵*/#definePAGEUP0x4900/*向下翻頁(yè)移鍵*/#definePAGEDOWN0x5100/*Escape鍵*/#defineESC0x011b/*左移鍵*/#defineLEFT0x4b
2、00/*右移鍵*/#defineRIGHT0x4d00/*下移鍵*/#defineDOWN0x5000/*上移鍵*/#defineUP0x4800/*空格鍵*/#defineSPACE0x3920#defineNO_PRESSED0#defineLEFT_PRESSED1#defineRIGHT_PRESSED2#definepi3.1415926/*定義全局變量*/intRx,Ry,R;intTOPx,TOPy,BOTTOMx,BOTTOMy;intCentx,Centy;intlineStartx,lineStarty,lineEndx,lineEndy;intlinePoint_x20,
3、linePoint_y20;/*這里的字模數(shù)組均由“點(diǎn)陣字模工具”生成,你可以用你自己需要的點(diǎn)陣信息來(lái)替換示例中的字模信息,注意字模大小要一致,否則顯示會(huì)出問(wèn)題。*/charzhi16K=/*以下是'直'的16點(diǎn)陣楷體_GB2312字模,32byte*/0x01,0x00,0x01,0x00,0x01,0xF0,0x1E,0x00,0x02,0x00,0x07,0xC0,0x08,0x40,0x0F,0x40,0x08,0x40,0x0F,0x40,0x08,0x40,0x0F,0x40,0x08,0x40,0x0F,0xFC,0x70,0x00,0x00,0x00,;char
4、xian16K=/*以下是'線'的16點(diǎn)陣楷體_GB2312字模,32byte*/0x00,0x80,0x00,0x90,0x08,0x88,0x10,0x80,0x24,0xF0,0x45,0x80,0x78,0xB0,0x11,0xC0,0x2C,0x88,0x70,0x50,0x04,0x60,0x18,0xA4,0x63,0x14,0x00,0x0C,0x00,0x04,0x00,0x00,;charju16K=/*以下是'矩'的16點(diǎn)陣楷體_GB2312字模,32byte*/0x00,0x00,0x08,0x00,0x08,0x78,0x10,0x80
5、,0x1E,0x80,0x28,0xF8,0x48,0x88,0x0E,0x88,0xF8,0xF0,0x08,0x80,0x14,0x80,0x12,0x9E,0x20,0xE0,0x40,0x00,0x00,0x00,0x00,0x00,;charxing16K=/*以下是形的16點(diǎn)陣楷體_GB2312字模,32byte*/0x00,0x00,0x07,0x88,0x3A,0x08,0x12,0x10,0x12,0x20,0x17,0x48,0xFA,0x10,0x12,0x20,0x12,0xC8,0x12,0x08,0x22,0x10,0x42,0x20,0x00,0x40,0x00,
6、0x80,0x03,0x00,0x00,0x00,;charyuan16K=/*以下是圓的16點(diǎn)陣楷體_GB2312字模,32byte*/0x00,0xF8,0x3F,0x08,0x23,0x88,0x24,0x88,0x27,0x08,0x21,0xC8,0x2E,0x48,0x29,0x48,0x29,0x48,0x22,0x88,0x24,0x48,0x28,0x08,0x3F,0xE8,0x00,0x10,0x00,0x00,0x00,0x00,;charqing16K=/*以下是清的16點(diǎn)陣楷體_GB2312字模,32byte*/0x00,0x80,0x00,0xE0,0x33,0x
7、80,0x10,0xE0,0x03,0x80,0x40,0xFC,0x2F,0x00,0x01,0xE0,0x12,0x20,0x13,0xA0,0x22,0x20,0x63,0xA0,0x42,0x20,0x02,0x60,0x00,0x20,0x00,0x00,;charping16K=/*以下是屏的16點(diǎn)陣楷體_GB2312字模,32byte*/0x00,0xF0,0x0F,0x30,0x08,0x60,0x0F,0x80,0x0A,0x20,0x09,0x40,0x08,0xF8,0x17,0x20,0x11,0x3E,0x2F,0xE0,0x21,0x20,0x42,0x20,0x8
8、2,0x20,0x04,0x20,0x08,0x20,0x00,0x00,;charbao16K=/*以下是保'的16點(diǎn)陣楷體_GB2312字模,32byte*/0x00,0x00,0x09,0xF0,0x0A,0x10,0x12,0x10,0x13,0xE0,0x30,0x80,0x50,0xFC,0x9F,0x80,0x11,0xC0,0x12,0xA0,0x14,0x98,0x18,0x8E,0x10,0x80,0x10,0x80,0x00,0x00,0x00,0x00,;charcun16K=/*以下是'存'的16點(diǎn)陣楷體_GB2312字模,32byte*/0x
9、01,0x00,0x01,0x00,0x01,0xF0,0x1E,0x00,0x02,0x70,0x05,0x90,0x08,0x20,0x08,0x40,0x18,0x7E,0x2B,0xA0,0xC8,0x20,0x08,0x20,0x08,0x20,0x08,0xA0,0x00,0x40,0x00,0x00,;charjia16K=/*以下是力口的16點(diǎn)陣楷體_GB2312字模,32byte*/0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x0F,0x00,0x79,0x3C,0x09,0x44,0x11,0x44,0x11,0x44,0x22,0x4
10、4,0x22,0x78,0x4A,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,;charzai16K=/*以下是'載'的16點(diǎn)陣楷體_GB2312字模,32byte*/0x00,0x80,0x08,0xA0,0x08,0x90,0x0E,0x80,0x38,0xF0,0x0F,0x80,0x78,0x50,0x0E,0x50,0x34,0x20,0x1E,0x20,0x34,0x50,0x0E,0x92,0x75,0x0A,0x04,0x06,0x04,0x02,0x00,0x00,;charbang16K=/*以下是幫的16點(diǎn)陣楷
11、體_GB2312字模,32byte*/0x04,0x00,0x07,0x38,0x1C,0x48,0x06,0x50,0x1C,0x50,0x07,0x48,0x78,0x58,0x11,0x40,0x21,0xF0,0x4F,0x10,0x09,0x10,0x09,0x50,0x09,0x20,0x01,0x00,0x01,0x00,0x00,0x00,;charzhu16K=/*以下是助的16點(diǎn)陣楷體_GB2312字模,32byte*/0x00,0x00,0x00,0x20,0x0C,0x20,0x34,0x20,0x24,0x20,0x34,0x38,0x25,0xC8,0x34,0x4
12、8,0x24,0x48,0x26,0x88,0x38,0x88,0xE1,0x28,0x02,0x10,0x04,0x00,0x00,0x00,0x00,0x00,;/*自定義函數(shù)*/voidoutChinese(char*mat,intmatsize,intx,inty,intcolor);voidfill(intstartx,intstarty,intendx,intendy,intcolor);voidshowHelp();voidsave();voidload();intmouseStatus(int*x,int*y);intsetMousePos(intx,inty);voidDra
13、wMouse(floatx,floaty);voidDrawLine();voidDrawRectangle();voidLineToCircle(intx0,inty0,intr);voidDrawCircle();longfactorial(intn);floatberFunction(inti,intn,doublet);voidDrawBezier();/*根據(jù)點(diǎn)陣信息顯示中文函數(shù)*/voidoutChinese(char*mat,intmatsize,intx,inty,intcolor)/*依次:字模指針、點(diǎn)陣大小、起始坐標(biāo)(x,y)、顏色*/inti,j,k,n;n=(matsi
14、ze-1)/8+1;for(j=0;j<matsize;j+)for(i=0;i<n;i+)for(k=0;k<8;k+)if(matj*n+i&(0x80>>k)/*測(cè)試為1的位則顯示*/putpixel(x+i*8+k,y+j,color);/*填充函數(shù)*/voidfill(intstartx,intstarty,intendx,intendy,intcolor)inti,j;for(i=startx;i<=endx;i+)for(j=starty;j<=endy;j+)/*在指定位置以指定顏色畫(huà)一像素*/putpixel(i,j,colo
15、r);/*顯示用戶(hù)幫助函數(shù)*/voidshowHelp()setcolor(14);setcolor(WHITE); outtextxy(45,50," outtextxy(45,65," outtextxy(45,80,"shrink it.");outtextxy(45,95,"outtextxy(45,50,"Line:");1 Pressleftbuttontostartuntiltolineend.");2 UseUP,DOWN,LEFT,RIGHTkeystomoveit.");3 UsePA
16、GEUPkeytoenlargeit,andPAGEDOWNkeyto4 UseSPACEkeytorotateit.");setcolor(14);setcolor(WHITE);outtextxy(45,120, corner.");outtextxy(45,135,outtextxy(45,150, to shrink it.");outtextxy(45,120,"Rectangle:");1 Pressleftbuttontostartuntiltoright2 UseUP,DOWN,LEFT,RIGHTkeystomoveit.&q
17、uot;);3 UsePAGEUPkeytoenlargeit,andPAGEDOWNkeysetcolor(14);outtextxy(45,170,"Circle:");setcolor(WHITE);outtextxy(45,170,"1Pressleftbuttontostartuntiltoend.");outtextxy(45,185,"2UsePAGEUPkeytoenlargeit,andPAGEDOWNkeytoshrinkit.");setcolor(14);outtextxy(45,205,"Bezie
18、r:");setcolor(WHITE);outtextxy(45,205,"Pressleftbuttontostart,andrightbuttontoend.");outtextxy(45,230,"PressESCkeytostoptheoperationfunction.");outtextxy(45,245,"Pressrightbuttontoendthedrawingworks.");outtextxy(45,260,"Pressanykeytocontinue");getch();fil
19、l(40,40,625,270,0);/*保存函數(shù)*/voidsave()inti,j;FILE*fp;charfileName20;fill(0,447,630,477,2);gotoxy(1,25);printf("nnnnInputthefilename.dat:");scanf("%s",fileName);fill(0,447,630,477,2);/*以讀寫(xiě)的方式打開(kāi)文件*/if(fp=fopen(fileName,"w+")=NULL)outtextxy(260,455,"Failedtoopenfile!&q
20、uot;);exit(0);outtextxy(280,455,"saving.");/*保存像素到文件*/for(i=5;i<630;i+)for(j=30;j<=445;j+)fputc(getpixel(i,j),fp);fclose(fp);fill(0,447,630,477,2);outtextxy(260,455,"saveover!");/*打開(kāi)函數(shù)*/voidload()inti,j;charfileName20;FILE*fp;fill(0,447,630,477,2);gotoxy(1,25);printf("
21、nnnnInputthefilename.dat:");scanf("%s",fileName);/*打開(kāi)指定的文件*/if(fp=fopen(fileName,"r+")!=NULL)fill(0,447,630,477,2);outtextxy(280,455,"loading.");/*從文件中讀出像素*/for(i=5;i<630;i+)for(j=30;j<=445;j+)putpixel(i,j,fgetc(fp);fill(0,447,630,477,2);outtextxy(280,455,&qu
22、ot;loadingover!");/*打開(kāi)失敗*/elsefill(0,447,630,477,2);outtextxy(260,455,"Failedtoopenfile!");fclose(fp);/*獲取鼠標(biāo)狀態(tài)函數(shù)*/intmouseStatus(int*x,int*y)*/*定義兩個(gè)寄存器變量,分別存儲(chǔ)入口參數(shù)和出口參數(shù)unionREGSinregs,outregs;intstatus;status=NO_PRESSED;/*入口參數(shù)AH3,讀取鼠標(biāo)位置及其按鈕狀態(tài)*/inregs.x.ax=3;int86(0x33,&inregs,&
23、outregs);/*CX表示水平位置,DX表示垂直位置*/*x=outregs.x.cx;*y=outregs.x.dx;/*BX表示按鍵狀態(tài)*/if(outregs.x.bx&1)status=LEFT_PRESSED;elseif(outregs.x.bx&2)status=RIGHT_PRESSED;return(status);/*設(shè)置鼠標(biāo)指針位置函數(shù)*/intsetMousePos(intx,inty)unionREGSinregs,outregs;/*入口參數(shù)AH4,設(shè)置鼠標(biāo)指針位置*/inregs.x.ax=4;inregs.x.cx=x;inregs.x.dx
24、=y;int86(0x33,&inregs,&outregs);/*繪制鼠標(biāo)函數(shù)*/voidDrawMouse(floatx,floaty)line(x,y,x+5,y+15);line(x,y,x+15,y+5);line(x+5,y+15,x+15,y+5);line(x+11,y+9,x+21,y+19);line(x+9,y+11,x+19,y+21);line(x+22,y+19,x+20,y+21);/*繪制直線函數(shù)*/voidDrawLine()intx0,y0,x1,y1;intlast_x=0,last_y=0;intendFlag=0;intkey;intt
25、emStartx,temStarty,temEndx,temEndy;intincrement_x,increment_y,angle;DrawMouse(last_x,last_y);while(1)/*右鍵結(jié)束畫(huà)直線*/while(mouseStatus(&x1,&y1)=RIGHT_PRESSED)endFlag=1;if(endFlag=1)break;/*鼠標(biāo)移動(dòng),沒(méi)有單擊,僅僅畫(huà)移動(dòng)的鼠標(biāo)*/while(mouseStatus(&x1,&y1)=NO_PRESSED)if(last_x!=x1|last_y!=y1)DrawMouse(last_x,
26、last_y);DrawMouse(x1,y1);last_x=x1;last_y=y1;/*單擊左鍵后,開(kāi)始畫(huà)直線*/if(mouseStatus(&x0,&y0)=LEFT_PRESSED)DrawMouse(last_x,last_y);line(x0,y0,x1,y1);last_x=x1;last_y=y1;/*拉動(dòng)過(guò)程中,畫(huà)直線和鼠標(biāo)*/while(mouseStatus(&x1,&y1)=LEFT_PRESSED)if(last_x!=x1|last_y!=y1)line(x0,y0,last_x,last_y);line(x0,y0,x1,y1)
27、;last_x=x1;last_y=y1;/*松開(kāi)左鍵后,畫(huà)直線完成,記錄直線的起始位置*/lineStartx=x0;lineStarty=y0;lineEndx=x1;lineEndy=y1;while(1)/*從鍵盤(pán)獲取鍵值,開(kāi)始操作(移動(dòng)、放大、縮小、旋轉(zhuǎn))直線*/key=bioskey(0);/*ESC鍵,退出操作*/if(key=ESC)break;/*旋轉(zhuǎn)*/if(key=SPACE)/*計(jì)算旋轉(zhuǎn)中心*/*如果直線示傾斜的*/if(lineStarty!=lineEndy)&&(lineStartx!=lineEndx)Centx=(lineEndx-lineSt
28、artx)/2+lineStartx;Centy=(lineEndy-lineStarty)/2+lineStarty;/*如果直線是豎直的*/if(lineStarty=lineEndy)Centx=(lineEndx-lineStartx)/2+lineStartx;Centy=lineStarty;/*如果直線是水平的*/if(lineStartx=lineEndx)Centx=lineStartx;Centy=(lineEndy-lineStarty)/2+lineStarty;temStartx=lineStartx;temStarty=lineStarty;temEndx=line
29、Endx;temEndy=lineEndy;/*旋轉(zhuǎn)不能超過(guò)邊界*/if(lineStartx>=10&&lineStarty>=40&&lineEndx<=620&&lineEndy<=445)/*清除原有的直線*/setwritemode(XOR_PUT);line(lineStartx,lineStarty,lineEndx,lineEndy);/*計(jì)算旋轉(zhuǎn)30度后的起點(diǎn)坐標(biāo)*/lineStartx=(temStartx-Centx)*cos(pi/6)-(temStarty-Centy)*sin(pi/6)+Cen
30、tx;lineEndx=(temEndx-Centx)*cos(pi/6)-(temEndy-Centy)*sin(pi/6)+Centx;/*計(jì)算旋轉(zhuǎn)30度后的終點(diǎn)坐標(biāo)*/lineStarty=(temStartx-Centx)*sin(pi/6)+(temStarty-Centy)*cos(pi/6)+Centy;lineEndy=(temEndx-Centx)*sin(pi/6)+(temEndy-Centy)*cos(pi/6)+Centy;temStartx=lineStartx;temStarty=lineStarty;temEndx=lineEndx;temEndy=lineEn
31、dy;/*繪制旋轉(zhuǎn)后的直線*/line(lineStartx,lineStarty,lineEndx,lineEndy);/*左移直線*/if(key=LEFT)if(lineStartx>=10&&lineStarty>=40&&lineEndx<=620&&lineEndy<=445)setwritemode(XOR_PUT);line(lineStartx,lineStarty,lineEndx,lineEndy);/*起始的橫坐標(biāo)減小*/lineStartx-=5;lineEndx-=5;line(lineStar
32、tx,lineStarty,lineEndx,lineEndy);/*右移直線 */if(key=RIGHT)if(lineStartx>=10lineEndy <=445)&& lineStarty>=40&&lineEndx<=620&&/*setwritemode(XOR_PUT);line(lineStartx,lineStarty,lineEndx,lineEndy);/*起始的橫坐標(biāo)增加*/lineStartx+=5;lineEndx+=5;line(lineStartx,lineStarty,lineEndx
33、,lineEndy);下移直線 */if(key=DOWN)if(lineStartx>=10lineEndy <=445)&& lineStarty>=40&&lineEndx<=620&&/*setwritemode(XOR_PUT);line(lineStartx,lineStarty,lineEndx,lineEndy);/*起始的縱坐標(biāo)增加 */lineStarty+=5;lineEndy+=5;line(lineStartx,lineStarty,lineEndx,lineEndy);上移直線 */if(key
34、=UP)if(lineStartx>=10lineEndy <=445)&& lineStarty>=40&&lineEndx<=620&&setwritemode(XOR_PUT);line(lineStartx,lineStarty,lineEndx,lineEndy);/*起始的縱坐標(biāo)減小 */lineStarty-=5;lineEndy-=5;line(lineStartx,lineStarty,lineEndx,lineEndy);/*放大直線*/if(key=PAGEUP)if(lineStartx>=1
35、0&&lineStarty>=40&&lineEndx<=620&&lineEndy<=445)setwritemode(XOR_PUT);line(lineStartx,lineStarty,lineEndx,lineEndy);/*如果直線是傾斜的*/if(lineStarty!=lineEndy)&&(lineStartx!=lineEndx)/*計(jì)算直線的傾角*/angle=atan(fabs(lineEndy-lineStarty)/(fabs(lineEndx-lineStartx);/*計(jì)算水平增量
36、*/increment_x=cos(angle)*2;/*計(jì)算垂直增量*/increment_y=sin(angle)*2;/*計(jì)算放大后的起始坐標(biāo)*/if(lineStartx<lineEndx)lineStartx-=increment_x;lineStarty-=increment_y;lineEndx+=increment_x;lineEndy+=increment_y;if(lineStartx>lineEndx)lineEndx-=increment_x;lineEndy-=increment_y;lineStartx+=increment_x;lineStarty+=
37、increment_y;/*如果直線豎直的*/if(lineStarty=lineEndy)lineStartx-=5;lineEndx+=5;/*如果直線是水平的*/if(lineStartx=lineEndx)lineStarty-=5;lineEndy+=5;line(lineStartx,lineStarty,lineEndx,lineEndy);/*縮小直線*/if(key=PAGEDOWN)if(lineStartx>=10&&lineStarty>=40&&lineEndx<=620&&lineEndy<=4
38、45)setwritemode(XOR_PUT);line(lineStartx,lineStarty,lineEndx,lineEndy);/*如果直線是傾斜的*/if(lineStarty!=lineEndy)&&(lineStartx!=lineEndx)/*計(jì)算直線的傾角*/angle=atan(fabs(lineEndy-lineStarty)/(fabs(lineEndx-lineStartx);/*計(jì)算水平減少量*/increment_x=cos(angle)*2;/*計(jì)算垂直減少量*/increment_y=sin(angle)*2;/*計(jì)算縮小后的起始坐標(biāo)*/
39、if(lineStartx<lineEndx)lineStartx+=increment_x;lineStarty+=increment_y;lineEndx-=increment_x;lineEndy-=increment_y;if(lineStartx>lineEndx)lineEndx+=increment_x;lineEndy+=increment_y;lineStartx-=increment_x;lineStarty-=increment_y;/*如果直線豎直的*/if(lineStarty=lineEndy)lineStartx+=5;lineEndx-=5;/*如果
40、直線是水平的*/if(lineStartx=lineEndx)lineStarty+=5;lineEndy-=5;line(lineStartx,lineStarty,lineEndx,lineEndy);DrawMouse(x1,y1);DrawMouse(last_x,last_y);/*繪制矩形函數(shù)*/voidDrawRectangle()intx0,y0,x1,y1;intlast_x=0,last_y=0;intendFlag=0;intkey;DrawMouse(last_x,last_y);while(1)/*單擊右鍵,結(jié)束繪制矩形*/while(mouseStatus(&
41、;x1,&y1)=RIGHT_PRESSED)endFlag=1;if(endFlag=1)break;/*移動(dòng)鼠標(biāo),僅僅繪制鼠標(biāo)即可*/while(mouseStatus(&x1,&y1)=NO_PRESSED)if(last_x!=x1|last_y!=y1)DrawMouse(last_x,last_y);DrawMouse(x1,y1);last_x=x1;last_y=y1;/*單擊左鍵開(kāi)始繪制矩形*/if(mouseStatus(&x0,&y0)=LEFT_PRESSED)DrawMouse(last_x,last_y);rectangle(
42、x0,y0,x1,y1);last_x=x1;last_y=y1;/*按著鼠標(biāo)左鍵不動(dòng),繪制矩形*/while(mouseStatus(&x1,&y1)=LEFT_PRESSED)if(last_x!=x1|last_y!=y1)rectangle(x0,y0,last_x,last_y);rectangle(x0,y0,x1,y1);last_x=x1;last_y=y1;/*繪制結(jié)束后,記錄左上角和右下角的坐標(biāo)*/TOPx=x0;TOPy=y0;BOTTOMx=x1;BOTTOMy=y1;while(1)key=bioskey(0);if(key=ESC)break;/*放
43、大矩形*/if(key=PAGEUP)if(TOPx>=10&&TOPy>=40&&BOTTOMx<=620&&BOTTOMy<=445)/*清除原有的直線*/setwritemode(XOR_PUT);rectangle(TOPx,TOPy,BOTTOMx,BOTTOMy);/*左上角坐標(biāo)減小*/TOPx-=5;TOPy-=5;/*右下角坐標(biāo)增加*/BOTTOMx+=5;BOTTOMy+=5;/*繪制放大后的矩形*/rectangle(TOPx,TOPy,BOTTOMx,BOTTOMy);/*縮小矩形*/if(key=P
44、AGEDOWN)if(TOPx>=10&&TOPy>=40&&BOTTOMx<=620&&BOTTOMy<=445)setwritemode(XOR_PUT);rectangle(TOPx,TOPy,BOTTOMx,BOTTOMy);/*左上角坐標(biāo)增加*/TOPx+=5;TOPy+=5;/*右下角坐標(biāo)減小*/BOTTOMx-=5;BOTTOMy-=5;/*繪制縮小后的矩形*/rectangle(TOPx,TOPy,BOTTOMx,BOTTOMy);/*左移矩形*/if(key=LEFT)if(TOPx>=10&
45、;&TOPy>=40&&BOTTOMx<=620&&BOTTOMy<=445)setwritemode(XOR_PUT);rectangle(TOPx,TOPy,BOTTOMx,BOTTOMy);/*橫坐標(biāo)減小*/TOPx-=5;BOTTOMx-=5;rectangle(TOPx,TOPy,BOTTOMx,BOTTOMy);/*右移矩形*/if(key=RIGHT)if(TOPx>=10&&TOPy>=40&&BOTTOMx<=620&&BOTTOMy<=445)s
46、etwritemode(XOR_PUT);rectangle(TOPx,TOPy,BOTTOMx,BOTTOMy);/*橫坐標(biāo)增加*/TOPx+=5;BOTTOMx+=5;rectangle(TOPx,TOPy,BOTTOMx,BOTTOMy);/*下移矩形*/if(key=DOWN)if(TOPx>=10&&TOPy>=40&&BOTTOMx<=620&&BOTTOMy<=445)setwritemode(XOR_PUT);rectangle(TOPx,TOPy,BOTTOMx,BOTTOMy);/*縱坐標(biāo)增加*/TOP
47、y+=5;BOTTOMy+=5;rectangle(TOPx,TOPy,BOTTOMx,BOTTOMy);/*上移矩形*/if(key=UP)if(TOPx>=10&&TOPy>=40&&BOTTOMx<=620&&BOTTOMy<=445)setwritemode(XOR_PUT);rectangle(TOPx,TOPy,BOTTOMx,BOTTOMy);/*縱坐標(biāo)減小*/TOPy-=5;BOTTOMy-=5;rectangle(TOPx,TOPy,BOTTOMx,BOTTOMy);DrawMouse(x1,y1);Dr
48、awMouse(last_x,last_y);/*用直線法生成圓*/voidLineToCircle(intx0,inty0,intr)intangle;intx1,y1,x2,y2;angle=0;x1=r*cos(angle*pi/180);y1=r*sin(angle*pi/180);while(angle<45)angle+=5;x2=r*cos(angle*pi/180);y2=r*sin(angle*pi/180);while(x2=x1)x2+;while(y2=y1)y2+;line(x0+x1,y0+y1,x0+x2,y0+y2);line(x0-x1,y0+y1,x0
49、-x2,y0+y2);line(x0+x1,y0-y1,x0+x2,y0-y2);line(x0-x1,y0-y1,x0-x2,y0-y2);line(x0+y1,y0-x1,x0+y2,y0-x2);line(x0+y1,y0+x1,x0+y2,y0+x2);line(x0-y1,y0-x1,x0-y2,y0-x2);line(x0-y1,y0+x1,x0-y2,y0+x2);x1=x2+1;y1=y2+1;/*繪制圓函數(shù)*/voidDrawCircle()intx0,y0,x1,y1,r,oldr;intlast_x,last_y;intendFlag;intkey;last_x=0;la
50、st_y=0;endFlag=0;DrawMouse(last_x,last_y);while(1)/*單擊右鍵,繪制圓結(jié)束*/while(mouseStatus(&x1,&y1)=RIGHT_PRESSED)endFlag=1;if(endFlag=1)break;/*移動(dòng)鼠標(biāo),僅繪制鼠標(biāo)即可*/while(mouseStatus(&x1,&y1)=NO_PRESSED)if(last_x!=x1|last_y!=y1)DrawMouse(last_x,last_y);DrawMouse(x1,y1);last_x=x1;last_y=y1;/*單擊左鍵,開(kāi)始
51、繪制圓*/if(mouseStatus(&x0,&y0)=LEFT_PRESSED)/*計(jì)算半徑*/r=sqrt(x0-x1)*(x0-x1)+(y0-y1)*(y0-y1);DrawMouse(last_x,last_y);LineToCircle(x0,y0,r);last_x=x1;last_y=y1;oldr=r;/*按住鼠標(biāo)左鍵不動(dòng),拖動(dòng)鼠標(biāo)繪制圓*/while(mouseStatus(&x1,&y1)=LEFT_PRESSED)if(last_x!=x1|last_y!=y1)r=sqrt(x0-x1)*(x0-x1)+(y0-y1)*(y0-y1)
52、;LineToCircle(x0,y0,oldr);LineToCircle(x0,y0,r);last_x=x1;last_y=y1;oldr=r;/*繪制結(jié)束后,記錄圓的圓心和半徑*/Rx=x0;Ry=y0;R=r;while(1)key=bioskey(0);if(key=ESC)break;/*放大圓*/if(key=PAGEUP)if(Rx-R>10&&Ry-R>40&&Rx+R<620&&Ry+R<445)/*如果半徑和初始狀態(tài)一樣大,則保留原來(lái)的圓*/if(R=r)setcolor(WHITE);R+=10;
53、circle(Rx,Ry,R);elsesetcolor(BLACK);/*用背景色畫(huà)圓,覆蓋原有的*/circle(Rx,Ry,R);/*增加半徑*/R+=10;setcolor(WHITE);/*繪制新圓*/circle(Rx,Ry,R);/*縮小圓*/if(key=PAGEDOWN)if(Rx-R>10&&Ry-R>40&&Rx+R<620&&Ry+R<445)*/*如果半徑和初始狀態(tài)一樣大,則保留原來(lái)的圓if(R=r)setcolor(WHITE);R-=10;circle(Rx,Ry,R);elsesetcolo
54、r(BLACK);/*用背景色畫(huà)圓,覆蓋原有的*/circle(Rx,Ry,R);setcolor(WHITE);/*減小半徑*/R-=10;circle(Rx,Ry,R);DrawMouse(x1,y1);DrawMouse(last_x,last_y);/*求階乘函數(shù)*/longfactorial(intn)longs=1;if(n=0)return1;while(n>0)s*=n;n-;returns;/*伯恩斯坦基函數(shù)*/floatberFunction(inti,intn,doublet)if(i=0&&t=0|t=1&&i=n)return1;
55、elseif(t=0|t=1)return0;returnfactorial(n)/(factorial(i)*factorial(n-i)*pow(t,i)*pow(1-t,n-i);/*繪制Bezier曲線函數(shù)*/voidDrawBezier()intx,y,x0,y0,x1,y1;floatj,t,dt;inti,n;intendFlag=0;intlast_x=0,last_y=0;n=0;DrawMouse(last_x,last_y);while(mouseStatus(&x1,&y1)=LEFT_PRESSED);while(1)while(mouseStatus
56、(&x1,&y1)=RIGHT_PRESSED)endFlag=1;if(endFlag=1)break;/*如果有兩個(gè)以上的點(diǎn),則將其連接,即畫(huà)直線*/if(n>1)line(linePoint_xn-1,linePoint_yn-1,linePoint_xn-2,linePoint_yn-2);/*移動(dòng)鼠標(biāo)*/while(mouseStatus(&x1,&y1)=NO_PRESSED)if(last_x!=x1|last_y!=y1)DrawMouse(last_x,last_y);DrawMouse(x1,y1);last_x=x1;last_y=y1;/*單擊左鍵時(shí),繪制點(diǎn)*/while(mouseStatus(&x0,&y0)=LEFT_PRESSED);putpixel(x0,y0,14);/*記錄每次鼠標(biāo)左鍵單擊的點(diǎn)坐標(biāo)*/linePoint_xn=x0;linePoint_yn=y0;n+;DrawMouse(x1,y1);dt=1.0/10;setwritemode(0);for(j=0;j<=10;j+=0.5)t=j*dt;x=0;y=0;i=0;while(i<n-1)x+=berFunction(i,n-2,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度物流倉(cāng)儲(chǔ)服務(wù)居間合同范本4篇
- 二零二五年度智能包裝紙箱定制服務(wù)合同樣本4篇
- 2025年度太陽(yáng)能窗戶(hù)安裝與能源管理合同4篇
- 2025年度智慧廚房設(shè)備承包合同模板4篇
- 中央空調(diào)采購(gòu)安裝承包合同(2024版)
- 2025年度個(gè)人帶車(chē)庫(kù)洋房買(mǎi)賣(mài)合同書(shū)2篇
- 二零二五年度生態(tài)旅游區(qū)承包合同4篇
- 2025年度門(mén)窗定制項(xiàng)目工程監(jiān)理與質(zhì)量控制合同3篇
- 2025年度企業(yè)年會(huì)慶典活動(dòng)全面策劃與執(zhí)行服務(wù)合同4篇
- 二零二四年度新疆邊境地區(qū)駱駝養(yǎng)殖合作社集體承包合同制3篇
- 《openEuler操作系統(tǒng)》考試復(fù)習(xí)題庫(kù)(含答案)
- 《天潤(rùn)乳業(yè)營(yíng)運(yùn)能力及風(fēng)險(xiǎn)管理問(wèn)題及完善對(duì)策(7900字論文)》
- 醫(yī)院醫(yī)學(xué)倫理委員會(huì)章程
- xx單位政務(wù)云商用密碼應(yīng)用方案V2.0
- 2024-2025學(xué)年人教版生物八年級(jí)上冊(cè)期末綜合測(cè)試卷
- 大學(xué)生就業(yè)指導(dǎo)(高職就業(yè)指導(dǎo)課程 )全套教學(xué)課件
- 死亡病例討論總結(jié)分析
- 第二章 會(huì)展的產(chǎn)生與發(fā)展
- 空域規(guī)劃與管理V2.0
- JGT266-2011 泡沫混凝土標(biāo)準(zhǔn)規(guī)范
- 商戶(hù)用電申請(qǐng)表
評(píng)論
0/150
提交評(píng)論