C语言图形图形处理精讲

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

对许多图形应用程序,直线和曲线是非常有用的。但对有些图形只能靠操作单个像素才能画出。当然如果没有画像素的功能,就无法操作直线和曲线的函数。而且通过大规模使用像素功能,整个图形就可以保存、写、擦除和与屏幕上的原有图形进行叠加。

(一)像素函数

putpixel() 画像素点函数

功能:函数putpixel() 在图形模式下屏幕上画一个像素点。

用法:函数调用方式为void putpixel(int x,int y,int color);

说明:参数x,y为像素点的坐标,color是该像素点的颜色,它可以是颜色符号名,也可以是整型色彩值。

此函数相应的头文件是graphics.h

返回值:无

例:在屏幕上(6,8)处画一个红色像素点:

putpixel(6,8,RED);

getpixel()返回像素色函数

功能:函数getpixel()返回像素点颜色值。

用法:该函数调用方式为int getpixel(int x,int y);

说明:参数x,y为像素点坐标。

函数的返回值可以不反映实际彩色值,这取决于调色板的设置情况(参见setpalette()函数)。

这个函数相应的头文件为graphics.h

返回值:返回一个像素点色彩值。

例:把屏幕上(8,6)点的像素颜色值赋给变量color。

color=getpixel(8,6);

(二)直线和线型函数

有三个画直线的函数,即line(),lineto(),linerel()。这些直线使用整型坐标,并相对于当前图形视口,但不一定受视口限制,如果视口裁剪标志clip为真,那么直线将受到视口边缘截断;如果clip为假,即使终点坐标或新的当前位置在图形视口或屏幕极限之外,直线截断到屏幕极限。

有两种线宽及几种线型可供选择,也可以自己定义线图样。下面分别介绍直线和线型函数。

line() 画线函数

功能:函数line()使用当前绘图色、线型及线宽,在给定的两点间画一直线。

用法:该函数调用方式为void line(int startx,int starty,int endx,int endy);

说明:参数startx,starty为起点坐标,endx,endy为终点坐标,函数调用前后,图形状态下屏幕光标(一般不可见)当前位置不改变。

此函数相应的头文件为graphics.h

返回值:无

例:见函数60.linerel()中的实例。

lineto() 画线函数

功能:函数lineto()使用当前绘图色、线型及线宽,从当前位置画一直线到指定位置。

用法:此函数调用方式为void lineto(int x,int y);

说明:参数x,y为指定点的坐标,函数调用后,当前位置改变到指定点(x,y)。

该函数对应的头文件为graphics.h

返回值:无

例:见函数60.linerel()中的实例。

linerel() 相对画线函数

功能:函数linerel() 使用当前绘图色、线型及线宽,从当前位置开始,按指定的水平和垂直偏移距离画一直线。

用法:这个函数调用方式为void linerel(int dx,int dy);

说明:参数dx,dy分别是水平偏移距离和垂直偏移距离。

函数调用后,当前位置变为增加偏移距离后的位置,例如,原来的位置是(8,6),调用函数linerel(10,18)后,当前位置为(18,24)。

返回值:无

例:下面的程序为画线函数调用实例:

#i nclude

void main()

{

int driver,mode;

driver=DETECT;

mode=0;

initgraph(&driver,&mode,"");

setcolor(15);

line(66,66,88,88);

lineto(100,100);

int linestyle;

unsigned upattern;

int thickness;

};

其中linestyle用于存放线型,线型值为表1-10中的各值之一。

upattern用为装入用户自定义线图样,这是16位字,每一位等于一个像素,如果哪个位被设置,那么该像素打开,否则关闭。

thickness为线宽值存放的变量,可参见表1-11。

getlinesettings()函数对应的头文件为graphics.h

返回值:返回的线型设置存放在info指向的结构中。

例:把当前线型的设置写入info结构:

struct linesettingstype info;

getlinesettings(&info);

setwritemode() 设置画线模式函数

功能:函数setwritemode() 设置画线模式

用法:函数调用方式为 void setwritemode()(int mode);

说明:参数mode只有两个取值0和1,若mode为0,则新画的线将覆盖屏幕上原有的图形,此为缺省画线输出模式。如果mode为1,那么新画的像素点与原有图形的像素点先进行异或(XOR)运算,然后输出到屏幕上,使用这种画线输出模式,第二次画同一图形时,将擦除该图形。调用setwritemode()设置的画线输出模式只影响函数

line(),lineto(),linerel(),recangle()和drawpoly()。

setwritemode()函数对应的头文件是graphics.h

返回值:无

例:设置画线输出模式为0:

setwritemode(0);

(三)、多边形函数

对多边形,无疑可用画直线函数来画出它,但直接提供画多边形的函数会给用户很大方便。最常见的多边形有矩形、矩形块(或称条形)、多边形和多边形块,我们还把长方形条块也放到这里一起考虑,虽然它不是多边形,但它的特例就是矩形(块)。下面直接介绍画多边形的函数。

rectangle() 画矩形函数

功能:函数rectangle() 用当前绘图色、线型及线宽,画一个给定左上角与右下角的矩形(正方形或长方形)。

相关文档
最新文档