如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第三讲与图形学相关的C语言编程一.了解c语言的图形函数1.图形模式控制函数(3)背景色:setbkcolor(intcolor);当前绘图颜色:setcolor(intcolor);2.基本绘图函数(3)moveto(intx,inty)把当前位置移动到(x,y)Moverel(intdx,intdy)把当前位置移动到(x+dx,y+dy)(4)circle(intx,inty,intradius)以(x,y)为圆心,radius为半径画园arc(intx,inty,intstangle,intendangle,intradius)画圆弧ellipse(x,y,stangle,endangle,xradius,yradius)画椭圆弧(5)rectangle(x1,y1,x2,y2)以(x1,y1)、(x2,y2)为对角点,绘制矩形。drawpoly(n,*p);画多边形。n表示多边形的定点数,p为一存放多边形顶点坐标的一维数组。(6)getmaxx()返回当前图形模式下最大x坐标函数getmaxy()返回当前图形模式最大y坐标函数(7)getx()返回当前图形模式下当前位置的x坐标(水平像素坐标)gety()返回当前图形模式下当前位置的y坐标(垂直像素坐标)例:显示图形模式下当前位置的x,y坐标值:printf("x:%d,y:%d",getx(),gety());(8)setlinestyle(intlinestyle,unsignedupattern,intthickness)设置当前画线的宽度和类型.linestyle:0实线;1点画线;2中心线;3破折线,4用户自定义的线型.thickness:1一个像素宽;3三个像素宽(9)setfillstyle(intpattern,intcolor)设置填充模式和颜色.pattern取值为0-12(10)bar(intleft,inttop,intright,intbottom)画一条矩形边,其左上角为(left,top),右下角为(right,bottom),用当前填充模式及颜色填充.(11)bar3d(intleft,inttop,intright,intbottom,intdepth,inttopflag)画三维矩形条,该条用当前填充模式和填充色彩填充,条左上角由(left,top)给出,条的右下角(right,bottom)给出.深度由depth给出,topflag不为零,放一个顶盖.(12)pieslice(intx,inty,intstange,intendangle,intradius)以(x,y)为圆心,画扇形3.图形屏幕操作函数1,简单的制造方法(1)画擦法原理是将T时刻A位置处的图像擦去,让它在T+t时刻在B位置处再现.擦除过程是针对图元进行的,所以速度慢,而且有明显的闪烁感.(2)更新视口法原理是利用setviewport函数和clearviewport函数不断在屏幕上开设视口、显示图形,再清除视口,显示变化的图像.该方法比擦除法快(3)覆盖刷新法原理将屏幕像素与计算机内存相联系.它首先计算出欲处理的图像区域的位置和大小,然后将该区域内容存入内存块,再将该区域的图像从屏幕上擦除,最后将保存在内存中的图像复制到新的屏幕位置上,如此重复擦除、再复制过程.它采用的是覆盖法,速度最快。2.动画处理函数(3)getimage(intx1,inty1,intx2,inty2)功能:将指定的矩形区域(x1,y1)至(x2,y2)范围内的图像画面存储到由指针p指向的内存块中.(4)put(intx,inty,*p,intop)功能:将存储在由指针变量p指向的内存区域中的图像画面传输到起始坐标为(x,y)的屏幕.op取值为0-4。0(COPY_PUT)表示覆盖原画面.1(XOR)表示两个画面的对应像素点作异或运算.3.动画设计步骤(5)调用putimage函数,以异或方式将屏幕上的原图像擦除.(6)调用putimage函数,以复制方式将内存块中图像传输到屏幕的新坐标点上.(7)重复3、4、5、6步骤。#include<stdio.h>#include<stdlib.h>#include<math.h>#include<conio.h>#include<graphics.h>main(){intheight=400,speed=1800,i;char*clip1,*clip2;intgdriver=DETECT,gmode;initgraph(&gdriver,&gmode,"");setcolor(RED);setfills