图形学教案turboc

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

安徽师范大学数学计算机科学学院计算机图形学补充TurboC的图形功能•图形显示器的两种显示模式:文本模式和图形模式在文本方式下,屏幕上可显示的最小单位是字符。文本方式设置不同,可显示的字符的列数、行数也不相同(在一般缺省方式下,为25行、80列),颜色也有所区别。在图形方式下,屏幕上可以控制的单位叫做像素,它是组成图形的基本元素,一般也成为“点”。分辨率越高,屏幕上包含的像素个数就越多,显示的图形越细,质量就越好。屏幕上每个像素的位置可以用该像素在屏幕坐标系中的坐标进行描述。安徽师范大学数学计算机科学学院计算机图形学屏幕坐标系是一个左手系,屏幕左上角为坐标系的原点(0,0),水平方向为X轴,自左向右;垂直方向为Y轴,自上而下。坐标范围与显示器的分辨率有关,例如,当分辨率为640×480时,左上角坐标为(0,0),右下角坐标为(639,479)。有了计算机基本图形设备,再配上高级语言(如TruboC),就可以进行图形的绘制工作。(0,0)XY安徽师范大学数学计算机科学学院计算机图形学一、图形初始化及应用设置函数因为在文本方式下不能显示图形,所有的图形函数均不能操作,因此在使用图形函数进行绘图之前,必须将显示适配器设置为图形模式,即通常所说的“图形模式初始化”。在绘图结束之后,又要让适配器的设置回到文本模式。TurboC提供了14个函数,进行图形系统的控制和管理工作。最常见的两个函数是:安徽师范大学数学计算机科学学院计算机图形学1、初始化图形系统函数voidfarinitgraph(gdrive,gmode,gpath)intfar*gdrive,*gmode,*gpath;gdrive:图形驱动器代号,gmode:图形模式代号,gpath:图形驱动程序路径。如:常用方式:intgdrive,gmode;gdrive=DETECT;initgraph(&gdrive,&gmode,“d:\\tc”);2、释放图形系统所分配的内存、恢复屏幕原显示模式函数voidfarclosegraph(void)调用形式:closegraph();安徽师范大学数学计算机科学学院计算机图形学二、屏幕管理函数TurboC提供了11个函数,用于对屏幕和视区的控制和管理。1、擦除整个图形屏幕,并将cp(当前位置)移到原点(0,0)voidfarcleardevice(void)2、建立视区voidsetviewport(x1,y1,x2,y2)安徽师范大学数学计算机科学学院计算机图形学安徽师范大学数学计算机科学学院计算机图形学3、清除视图区清除视图区用函数clearviewport。它的作用是清除掉当前的视图区,将当前点的位置重新设置为屏幕左上角(0,0)。其调用格式为:clearviewport();安徽师范大学数学计算机科学学院计算机图形学三、常用的作图函数1、画点函数putpixel(intx,inty,intcolor)2、以当前颜色、线型、宽度画直线函数voidline(x0,y0,x,y)intx0,y0,x,y;从(x0,y0)画到(x,y)。3、以当前颜色、线型、宽度画直线函数voidfarlineto(intx,inty)从当前点(cp)画到(x,y)。安徽师范大学数学计算机科学学院计算机图形学4、得到当前位置坐标函数(1)intfargetx(void)返回x坐标(2)intfargety(void)返回y坐标5、以当前颜色、线型、线宽画一矩形函数voidfarrectangle(left,top,right,bottom)intleft,top,right,bottom;安徽师范大学数学计算机科学学院计算机图形学6、以当前填充模式、填充颜色画一矩形函数voidfarbar(left,top,right,bottom)intleft,top,right,bottom;7、以当前填充模式、填充颜色画一多边形函数voidfarfillpoly(intnum,inta[])num:顶点数;a[]:存放各顶点坐标,共num*2个数;若是封闭的,则有num+1个点,有(num+1)*2个数。安徽师范大学数学计算机科学学院计算机图形学8、以当前颜色、线型、线宽画圆函数voidfarcircle(intx,inty,intradius)x,y:圆心坐标;radius:半径。9、以当前颜色、线型、线宽画椭圆弧函数voidfarellipse(x,y,stangle,endangle,xradius,yradius)intx,y,stangle,endangle,xradius,yradius;x,y:椭圆中心坐标;endangle,endangle:画椭圆的起始角和终止角。若endangle=0,endangle=360,则画一完整椭圆。xradius,yradius:为x、y方向的轴长半径。安徽师范大学数学计算机科学学院计算机图形学10、以当前颜色、线型、线宽及填充模式、填充颜色画扇形函数voidfarpiselice(x,y,stangle,endangle,radius)若stangle=0,endangle=360,则画一完整圆。安徽师范大学数学计算机科学学院计算机图形学四、图形属性控制函数1、得到背景颜色数值函数intfargetbkcolor(void)常调用形式:oldbkcolor=getbkcolor();2、得到当前绘图颜色数值函数intfargetcolor(void)常调用形式:oldcolor=getcolor();3、设置背景颜色函数voidfarsetbkcolor(intcolor)调用形式如:setbkcolor(BLUE);(兰色背景)4、设置当前绘图颜色函数voidfarsetcolor(intcolor)调用形式如:setcolor(RED);(红色绘图颜色)5、获得最大颜色数函数intfargetmaxcolor(void)调用形式如:maxclor=getmaxcolor();安徽师范大学数学计算机科学学院计算机图形学安徽师范大学数学计算机科学学院计算机图形学关于颜色值、符号常量与颜色的对应关系符号常量数值颜色BLACK0BLUE1GREEN2CYAN3青RED4MAGENTA5品红BROWN6棕色安徽师范大学数学计算机科学学院计算机图形学LIGHTGRAY7灰白DARKGRAY8灰LIGHTBLUE9LIGHTGREEN10LIGHTCYAN11浅青LIGHTRED12LIGHTMAGENTA13浅品红(淡紫色)YELLOW14WHITE15#includegraphics.h“/*hhj01.c*/main(){intgdriver=DETECT,gmode;inti,y=0;initgraph(&gdriver,&gmode,d:\\turboc2);for(i=0;i16;i++){setcolor(i);line(10,10+y,100,10+y);y+=5;}getch();closegraph();}例1、用16种不同的颜色显示16条不同的线段。例、用直线生成(直纹)曲面#includegraphics.h“/*pattern.c*/main(){inty;longx;intgdriver=DETECT,gmode;initgraph(&gdriver,&gmode,d:\\turboc2);cleardevice();setbkcolor(9);setcolor(4);for(y=0;y=240;y+=5){x=320/240*y;line(0,y,x,240);}getch();closegraph();}安徽师范大学数学计算机科学学院计算机图形学6、设置画线宽度和线型的函数voidfarsetlinestyle(linestyle,upattern,thickness)intlinestyle,thickness;unsignedupattern;linestyle(线型)取值,0:实线,1:点,2:长短,3:长虚线,4:自定义线型。thickness(宽度)取值:1、3。upattern:当linestyle为4时起作用。其他4种预定义情况可取0。/*line_style01.c*/#includegraphics.hmain(){inti,y=0,gdriver=DETECT,gmode;initgraph(&gdriver,&gmode,d:\\turboc2);for(i=0;i4;i++){setcolor(i+1);setlinestyle(i,0,1);line(10,100+y,100,100+y);y+=5;}getch();closegraph();}例、显示turboc固有的画线模式。/*line_style02.c*/#includegraphics.hmain(){intgdriver=DETECT,gmode;unsignedupattern=0XEBAE;initgraph(&gdriver,&gmode,d:\\turboc2);setcolor(1);setlinestyle(4,upattern,3);rectangle(100,100,300,300);getch();closegraph();}安徽师范大学数学计算机科学学院计算机图形学例、用自定义线形画线。安徽师范大学数学计算机科学学院计算机图形学7、设置着色(填充)模式和颜色函数voidfarsetfillstyle(intpattern,intcolor)pattern(着色模式)取值:0:用背景颜色填充,1:用纯色填充,2~12:用各种线型和色点填充。color:填充颜色。8、填充封闭区域函数voidfarfloodfill(x,y,color)intx,y,color;x,y:填充封闭区域中的一点;color:封闭区域的边界颜色。/*bar3d.c*/#includegraphics.h“main(){intgdriver=DETECT,gmode;initgraph(&gdriver,&gmode,d:\\turboc2);setcolor(3);setfillstyle(7,1);bar(200,200,300,300);getch();closegraph();}安徽师范大学数学计算机科学学院计算机图形学安徽师范大学数学计算机科学学院计算机图形学#includegraphics.hmain(){inti,gdriver=DETECT,gmode;initgraph(&gdriver,&gmode,d:\\turboc2);setfillpattern(8,RED);setcolor(YELLOW);circle(200,200,100);floodfill(200,200,YELLOW);/*pattern.c*/getch();closegraph();}安徽师范大学数学计算机科学学院计算机图形学9、设置用户自定义的填充模式voidsetfillpattern(char*upattern,intcolor);其中,upattern是指针,指向8个字节,组成用户定义的8×8点阵图样式。每个字节的8个二进制表示水平8点,8字节表示8行,然后以此模型向整个封闭区域填充。安徽师范大学数学计算机科学学院计算机图形学charupattern[8]={0x00,0x24,0x7e,0x3c,0x3c,0x7e,0x24,0x00};#includegraphics.hmain(){inti,gdriver=DETECT,gmode;initgraph(&gdriver,&gmode,d:\\turboc2);setfillpattern(upattern,RED);setcolor(YELLOW);circle(200,200,100);floodfill(200,200,YELLOW);/*pattern.c*/getch();closegraph();}例、用setf

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功