/* 窗口操作2 CKCZ2.C 程序设计:谢春 2000.1.1.*/ #include"graphics.h" /*调用图形库函数*/ #include"math.h" /*调用数学函数*/ #include"stdio.h" /*调用标准I/O函数*/ #define PI 3.141596 /*宏定义PI字符串*/ main() /*主函数*/ { int a=1,b,h,r1,r2,x=155,y=115; float f,i=15,j,j0; /*定义单精度浮点型变量*/ int gdriver=DETECT,gmode; /*定义整型变量gdriver,gmode*/ initgraph(&gdriver,&gmode," "); /*定义变量后,初始化图形系统*/ cleardevice(); setbkcolor(a); /*背景颜色*/ printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf(" C 语言图形程序设计\n"); printf("\n"); printf(" 清除窗口函数\n"); printf(" clearviewport( );\n"); printf(" 设置窗口函数\n"); printf(" setviewport(xl,yt,xr,yb,clipflag);\n"); printf(" clipflag为1: 超窗口剪掉\n"); printf(" clipflag为0: 超窗口不剪\n"); printf(" 画像素点函数\n"); printf(" putpexel(x,y,color);\n"); printf(" 设置右上右下窗口语句\n"); printf(" setviewport(323,7,632,237,1);\n"); printf(" setviewport(323,243,632,472,1);\n"); printf(" 绘制图形语句\n"); printf(" 正弦波调制圆\n"); printf(" 梯形波调制圆\n"); printf(" 填充方圆图形\n"); printf(" 线弧圆函数\n"); printf(" putpixel(240-20*cos(i),\n"); printf(" 80-20*sin(i),b);\n"); printf("\n"); printf(" 按任意键继续 !\n"); setcolor(2); setlinestyle(0,0,3); /*实线线宽3*/ rectangle(2,2,637,477); /*绘制图纸边框*/ setcolor(3); setlinestyle(0,0,1); /*实线线宽1*/ rectangle(6,6,318,473); /*绘制左窗口框*/ rectangle(322,6,633,238); /*绘制右上窗口框*/ rectangle(322,242,633,473); /*绘制右下窗口框*/ getch(); /*画一幅擦一幅*/ setviewport(323,7,632,237,1); /*设置右上窗口a*/ for (r2=30;r2<=90;r2+=30) for (j=0;j<=2*PI;j+=PI/999) /*绘制正弦波调整圆图形*/ { b=13,h=15,r1=r2; putpixel(x-(r1+h*sin(i*j))*cos(j),y-(r2+h*sin(i*j))*sin(j),b); } getch(); clearviewport(); setviewport(323,243,632,472,1); /*设置右下窗口a*/ setcolor(12); for (r1=30;r1<=90;r1+=30) { h=10; moveto(x-r1-h,y); for (j0=0;j0<=360;j0+=5) /*绘制梯形波图形*/ { j=j0*PI/180; f=fmod(j0,10); if(f>0) h=-h; lineto (x-(r1+h)*cos(j),y-(r1+h)*sin(j)); } } getch(); clearviewport(); setviewport(323,7,632,237,1); /*设置右上窗口b*/ setcolor(10); ellipse(x,y,0,360,150,110); /*绘制地球(椭圆)*/ setcolor(11); circle(x,y,106); /*绘制经线(圆形)*/ line(x,5,x,225); /*绘制经线(垂直线)*/ line(6,y,304,y); /*绘制赤道(水平线)*/ setcolor(12); ellipse(x,y-112,210,330,90,35); /*绘制北极圈(椭圆弧)*/ ellipse(x,y+112,30,150,90,35); /*绘制南极圈(椭圆弧)*/ setfillstyle(1,10); bar(x-60,y-50,x-20,y-20); /*绘制光棒*/ setfillstyle(1,11); pieslice(x+20,y-20,0,90,35); /*绘制扇形*/ setfillstyle(1,12); fillellipse(x-40,y+30,20,20); /*绘制填充圆形*/ setfillstyle(1,13); fillellipse(x+40,y+35,25,17); /*绘制填充椭圆*/ getch(); clearviewport(); setviewport(323,243,632,472,1); /*设置右下窗口b*/ setcolor(10); ellipse(x,y,0,360,150,112); /*绘制椭圆(地球)*/ setcolor(11); circle(x,y,110); /*绘制圆形(经线)*/ circle(x,y-55,30); /*绘制上小圆*/ circle(x,y+55,30); /*绘制下小圆*/ circle(x,y-55,2); /*绘制上圆心*/ circle(x,y,2); /*绘制中圆心*/ circle(x,y+55,2); /*绘制下圆心*/ setcolor(12); arc(x,y-55,90,270,54); /*绘制上圆弧*/ arc(x,y+55,270,450,54); /*绘制下圆弧*/ setcolor(13); arc(x,y-70,90,270,15); /*绘制上小圆弧*/ arc(x,y-40,270,450,15); arc(x,y+40,90,270,15); /*绘制下小圆弧*/ arc(x,y+70,270,450,15); getch(); clearviewport(); getch(); /*只画不擦*/ setviewport(323,7,632,237,1); /*设置右上窗口*/ setcolor(10); ellipse(x,y,0,360,150,110); /*绘制地球(椭圆)*/ setcolor(11); circle(x,y,106); /*绘制经线(圆形)*/ line(x,5,x,225); /*绘制经线(垂直线)*/ line(6,y,304,y); /*绘制赤道(水平线)*/ setcolor(12); ellipse(x,y-112,210,330,90,35); /*绘制北极圈(椭圆弧)*/ ellipse(x,y+112,30,150,90,35); /*绘制南极圈(椭圆弧)*/ setfillstyle(1,10); bar(x-60,y-50,x-20,y-20); /*绘制光棒*/ setfillstyle(1,11); pieslice(x+20,y-20,0,90,35); /*绘制扇形*/ setfillstyle(1,12); fillellipse(x-40,y+30,20,20); /*绘制填充圆形*/ setfillstyle(1,13); fillellipse(x+40,y+35,25,17); /*绘制填充椭圆*/ getch(); setviewport(323,243,632,472,1); /*设置右下窗口b*/ setcolor(10); ellipse(x,y,0,360,150,112); /*绘制椭圆(地球)*/ setcolor(11); circle(x,y,110); /*绘制圆形(经线)*/ circle(x,y-55,30); /*绘制上小圆*/ circle(x,y+55,30); /*绘制下小圆*/ circle(x,y-55,2); /*绘制上圆心*/ circle(x,y,2); /*绘制中圆心*/ circle(x,y+55,2); /*绘制下圆心*/ setcolor(12); arc(x,y-55,90,270,54); /*绘制上圆弧*/ arc(x,y+55,270,450,54); /*绘制下圆弧*/ setcolor(13); arc(x,y-70,90,270,15); /*绘制上小圆弧*/ arc(x,y-40,270,450,15); arc(x,y+40,90,270,15); /*绘制下小圆弧*/ arc(x,y+70,270,450,15); getch(); closegraph(); }