版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言简易图形教程 1-驱动图形模式C 语言函数库中提供了丰富的图形函数,例如画圆函数、画线函数、画矩形函数、画点函数等等,那么如何使用这些函数呢,C 语言简易图形教程系列会给大家做一个比较详细的讲解,那么先来看一下在使用这些函数前必须先做的一件事驱动图形模式C 语言一般分成两种界面,一是字符界面,就是打印最经典的“HelloWorl d!” 的那个界面;另一个就是图形界面C 语言将字符界面作为默认的显示界面。当我们需要使用图形界面的时候,需要先将字符界面驱动为图形界面,然后才可 以调用上面说的那些图形函数,下面来看一下,如何驱动图形模式。图形驱动函数代码如下:voidinitgr(void
2、)int gd = DETECT,gm = 0; initgraph(&gd,&gm,);函数说明:该函数 initgr() 为用户自定义函数,没有参数和返回值,如需驱动图形模式,则直接调用该函数即可。gd = DETECT 设置自动检测显示器。gm = 0 设置自动检测分辨率。registerbgidriver(EGAVGA_driver) 建立独立图形运行程序, 该语句一般在Win-Tc 环境下才需要使用,如想在 TurboC 环境下运行,将该语句删除或注释掉即可。initgraph(&gd, &gm, ) 该语句中的函数 initgraph() C 语言的库函数, 包含在头文件“grap
3、hics.h” 中, 该语句的作用为初始化图形系统。头文件: 该自定义函数中所用到的库函数均包含在头文件 graphics.h 中。返回值: 无返回值。下面我们来看一个简单的例子,例子的功能是驱动图形模式后在屏幕中心画一些同心圆。代码如下:/* 打开图形函数头文件 #include/* 驱动图形模式 */voidinitgr(void)int gd = DETECT,gm = 0; initgraph(&gd,&gm,);voidmain(void)int i;initgr();/*调用图形驱动函数 for(i=10;i=100;i+=10)circle(320,240,i);/*画圆函数,
4、头两个参数为圆心坐标, i 为半径*/getch();closegraph();/*关闭图形驱动 */C语言简易图形教程2设置前景色和背景色设置前景色功能: 设置当前画笔颜色。函数原型:voidsetcolor(intcolor)函数说明: 将当前画笔设置为 color 代表的颜色。Color 可以是 0 至 15 之间的任意整数,也可以是这 16 个整数所对应的符号常量,如整数 0 所对应的符号常量为 BLACK ,而这 16 个整数或符号常量分别代表 C 语言图形模式下的 16 中颜色。具体情况如下表所示。颜色表符号常量数值BLACK0BLUE1GREEN2CYAN3RED4MAGENTA
5、5BROWN6LIGHTGRAY7DARKGRAY8LIGHTBLUE9LIGHTGREEN10LIGHTCYAN11LIGHTRED12LGHTMAGENTA13含义黑色蓝色绿色青色红色洋红棕色淡灰深灰淡蓝淡绿淡青淡红淡洋红YELLOW14黄色WHITE15白色头文件:该函数包含在头文件 graphics.h中返回值:无返回值。函数举例: setcolor(4);设置背景色功能: 设置当前背景的颜色。函数原型:voidsetbkcolor(intcolor);函数说明: 将当前的背景设置为 color 所代表的颜色。color 的取值与设置前景色中的 color 相同。头文件:该函数包含在头
6、文件 graphics.h中返回值:无返回值。函数举例: setbkcolor(RED);下面看一个例子, 将背景设为红色, 前景设为白色, 在屏幕中画个同心圆。/* 打开图形函数头文件 #include/* 驱动图形模式 */voidinitgr(void)int gd = DETECT,gm = 0; initgraph(&gd,&gm,);voidmain(void)int i;initgr();/*调 用 图 形 驱 动 函 数 */ setcolor(WHITE);/*等价于 setcolor(15);*/ setbkcolor(RED);/*等价于 setbkcolor(4);*/
7、 for(i=10;i=100;i+=10)circle(320,240,i); getch();closegraph();/*关闭图形驱动 */C 语言简易图形教程 3-设置线型函数设置线型函数功能:为画线函数设置当前线型,包括线型、线图样和线宽。函数原型:void setlinestyle(int stly,unsigned pattern,int width)函数说明:参数style 为线型取值,也可以用相应名称表示,如下表中所示。线型名称取值含义SOLID_LINE0实线DOTTED_LINE1点线CNTER_LINE2中心线DASHED_LINE3虚线USERBIT_LINE4用户自
8、定义线型pattern16(bitstyle=USERBIT_LINE1) 时,pattern 的值才有意义,使用用户自定义线图样,与图样中“1”位对应的像素显示, 如果要画长虚线,那么pattern0 xFF000 xF00F,当style 不为USERBIT_LINE 值时,虽然pattern0。参数 wigth 用来设定线宽,通常取值为 1、2、3,单位为像素。若用非法参数调用setlinestyle()函数,那么 graphresult()会返回错误代码,并且当前线型继续有效。头文件:该函数包含在头文件graphics.h 中。返回值:无返回值。函数举例:setlinestyle(0,
9、0,1);下面举个简单的小例子,用不同的线型来画线。#include void initgr(void)int gd = DETECT, gm = 0; registerbgidriver(EGAVGA_driver); initgraph(&gd, &gm, );int main(void)initgr();setcolor(YELLOW);/*设置前景色为黄色*/setlinestyle(0,0,1); line(100,100,100,300);setlinestyle(1,0,3); line(200,100,200,300);setlinestyle(2,0,3); line(300
10、,100,300,300);getch(); return 0;C 语言简易图形教程 4-画线函数功能:函数line()使用当前绘图色、线型及线宽,在给定的两点间画一直线。函数原型:void line(int startx,int starty,int endx,int endy)参数 startx,starty 为起点坐标,endx,endy (当前位置不改变。头文件:该函数包含在头文件graphics.h 中。返回值:无返回值。函数举例:line(100,100,200,300);还有两个和line void far lineto(int x, int y);画一条从当前光标位置到点(x,
11、y)的线。void far linerel(int dx, int dy);画一条从当前光标位置(x, y)到按相对增量确定的点(x dx, y dy)的直线。C 语言简易图形教程 5-画圆函数画圆函数功能:函数circle()使用当前绘图色并以实线画一个完整的圆。函数原型:void circle(int x,int y,int radius)函数说明:参数x,y 为圆心坐标,radius 为圆半径,用像素个素表示。注意,调用circle()函数画圆时不用当前线型。头文件:该函数包含在头文件graphics.h 中。返回值:无返回值。函数举例:circle(100,100,50);C6-画矩形
12、函数功能:函数 rectangle() 用当前绘图色、线型及线宽,画一个给定左上角与右下角的矩形(正方形或长方形)。函数原型:void rectangle(int left,int top,int right,int bottom)参数 left,top 是左上角点坐标,right,bottom 点不在当前图形视口内,且裁剪标志 clip (1)视口内的矩形部分才被画出。头文件:该函数包含在头文件graphics.h 中。返回值:无返回值。函数举例:rectangle(100,100,300,300);C 语言简易图形教程 7-画点函数和汉字点阵画点函数功能:函数putpixel() 函数原型
13、:void putpixel(int x,int y,int color)函数说明:参数 x,y 为像素点的坐标,color 可以是整型色彩值。头文件:该函数包含在头文件graphics.h 返回值:无返回值。函数举例:在屏幕上(6,8)处画一个红色像素点:putpixel(6,8,RED);TC 有的图形都可以用点来完成。画点函数一个最经典的应用就是用来实现打印汉字点阵。下面来看一个简单的例子。注:汉字点阵的字模可以使用 win-tc 自带的“点阵字模工具”来获取,具体操作:菜单超级工具集点阵字模工具#include char wei48F=/* 以下是 唯 的 48 点阵方正粗倩简体 字模
14、,288 byte */0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x03,0 xF1,0 xF8,0 x00,0 x00,0 x00,0 x03,0 xF0,0 xF8,0 x00,0 x1F,0 x9C,0 x03,0 xF0,0 xF8,0 x00,0 x1F,0 xBF,0 x03,0 xF0,0 xFC,0 x00,
15、0 x1F,0 x8F,0 x83,0 xF0,0 xFC,0 x00,0 x1F,0 x8F,0 x83,0 xE0,0 x7C,0 x00,0 x1F,0 x8F,0 x87,0 xE0,0 x7E,0 x00,0 x1F,0 x8F,0 x87,0 xE0,0 x0F,0 x00,0 x1F,0 x8F,0 x87,0 xE0,0 x00,0 x00,0 x1F,0 x8F,0 x87,0 xE0,0 x00,0 x00,0 x1F,0 x8F,0 x8F,0 xFF,0 xFF,0 xFC,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,
16、0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x9F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x9F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 xBF,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 xFF,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xFF,
17、0 xFF,0 xF8,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,
18、0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xFF,0 xFF,0 xF8,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,
19、0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 xBF,0 x0F,0 xC0,0 x7E,0 x00,0 x00,0 x00,0 x0F,0 xFF,0 xFF,0 xFC,0 x00,0 x00,0 x0F,0 xC0,0 x00,0 x00,0 x00,0 x00,0 x0F,0 xC0,0 x00,0 x00,;void initgr(void)/* 驱动图形模式 */int gd = DETECT, gm = 0; regis
20、terbgidriver(EGAVGA_driver); initgraph(&gd, &gm, );void drawmat(char *mat,int matsize,int x,int y,int color)/*汉字点阵输出函数*/*参数说明:char *mat:汉字点阵在内存中的地址int matsize:汉字点阵的大小,例如 16*16、24*24int x 和 int y:汉字点阵在屏幕上显示的坐标int color:汉字点阵的颜色*/int i,j,k,m; m=(matsize-1)/8+1; for(j=0;jmatsize;j+)for(i=0;im;i+) for(k=
21、0;kk) putpixel(x+i*8+k,y+j,color);void main(void)initgr();/* 调用输出汉字点阵函数 */ drawmat(wei48F,48,150,50,15);/* 调用结束 */ getch();C 语言简易图形教程 8-字符串的设置与输出设置文本型式函数功能:函数 settextstyle() 设置图形文本当前字体、文本显示方向(水平显示或垂直显示) 以及字符大小。函数原型:void settextstyle(int font,int direction,int charsize)函数说明:函数括号中,font 为文本字体参数,directi
22、on 为文本显示方向,charsize 为字符大小参数。头部文件graphics 中分别对它们进行了定义。下表所列为标准字体。图形文本标准字体字体符号名字体符号名等价值含义DEFAULTDEFAULTFONT08*8 点阵字型(缺省字体)笔划式三倍字型(三倍字TRIPLEx_FONT1体)SMALL_FONT2笔划式小字型(小字体)SANS_SERIF_FONT3笔划式字(Sanserif 字体)GOTHIC_FONT4笔划黑体字型(哥特体)在设置字体之前,被选字体的.CHR 文件必须装在initgraph()中指定的driverpath(驱动程序路径)目录或子目录里。缺省时图形文本显示方向为
23、水平方向,但可以设置图形文本显示方向为垂直方向(逆时针转90 度)。下表给出了这两个图形文本显示方向。图形文本显示方向显示方向符号名显示方向符号名等价值说明HORIZ_DIR0从左到右显示(水平方向)VERT_DIR1从底向上显示(垂直方向)显示,但若需要也可设计。010)=0 表示以缺省比例显示即4 倍或由函数setusercharsize(示。最大有效的charsize。头文件:该函数包含在头文件graphics.h 中。返回值:无返回值。显示字符串函数功能:函数outtextxy() 在图形模式下屏幕坐标像素点(x,y)处显示一个字符串。函数原型:void outtextxy(int x
24、,int y,char *string)函数说明:参数(x,y)给定要显示字符串的屏幕位置,string 指向该字符串。调用此函数不影响当前光标位置,当然光标是不可见的。头文件:该函数包含在头文件graphics.h 中。返回值:无返回值。函数举例如下:#include void initgr(void)图形驱动函数*/int gd = DETECT, gm = 0; registerbgidriver(EGAVGA_driver);/*如果在 TorboC 环境下运行,请将该行删掉*/initgraph(&gd, &gm, );void word(void)setcolor(4);/*设置画
25、笔为红色*/ settextstyle(0,0,1);/* 设 置 文 本 输 出 格 式 */ outtextxy(150,200,Welcome to C world!);/* 输 出 文 本 */ setcolor(14); settextstyle(0,0,2);outtextxy(150,250,Welcome to C world!); setcolor(13);settextstyle(0,1,1); outtextxy(100,100,Welcome to C world);void main(void)initgr();word();getch();/*暂停程序,查看程序结果
26、*/ closegraph();/*关闭图形模式函数*/C 语言简易图形教程 9-图像的复制与粘贴功能:函数imagsize()返回存储一块屏幕图像所需的内存大小(即字节数)。函数原型:unsigned imagsize(int left,int top,int right,int bottom)函数说明:参数(left,top)为所定义的一块图像屏幕左上角,(right,bottom)为其右下角。函数调用执行后,返回存储该块屏幕所需要的字节数。如果所需要字节数大于64KB,那么将返回-1。imagesize()函数一般与下面getimage()函数联用。头文件:该函数包含在头文件graphi
27、cs.h 中。返回值:返回一块图像屏幕存储所需的字节数,如果大于64KB,则返回-1。函数举例:确定左上角(10,10)与右下角(100,100)所定义的屏幕图像所需的字节数:1.1.unsigned size;2.size=imagesize(10,10,100,100);2、保存图像函数功能:函数getimage()保存左上角与右下角所定义的屏幕上像素图形到指定的内存区域。函数原型:void getimage(int left,int top,int right,int bottom,void *buf)函数说明:函数中参数(left,tp(right,bottm64KB)以用下面函数头文
28、件:该函数包含在头文件h返回值:无返回值。3、输出图像函数功能:函数putimage(将) 一个先前保存在内存中的图像输出到屏幕上。函数原型:void putimage(int left,int top,void *buf,int ops)函数说明:参数(left,tpbuf指向要输ops6-3输出方式符号名取 值输出方式符号名取 值含 义COPY_PUT0图像输出到屏幕上,取代原有图像XOR_PUT1图像和原有像素作异或运算OR_PUT2图像和原有像素作或运算AND_PUT3图像和原有像素作与运算NOT_PUTNOT_PUT4把求反的位图像输出到屏幕上COPy_PUT 输出方式:图像中每个像素都直接绘制到屏幕上,取代原有图像像素,包括空白的图像像素(背景)。完全空白的图像可以用来擦除其它图像或屏幕的一部分。但通常选择XOR_PUT 输出方式擦除原有图像。XOR_PUT 输出方式:上。当某一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024山林租赁合同范本:生态旅游发展合作2篇
- 2024年度港口工程船舶燃料供应合同范本3篇
- 2024年度水利工程引水渠道顶管施工合同3篇
- 2024年标准企业增资扩股协议范本版B版
- 2024年度租赁房屋物业服务协议范本解析3篇
- 2024年度青岛某教育培训合同(标的:教育培训服务)2篇
- 2024年版工程装饰项目工程设计优化咨询合同
- 勘察合同范例 律师
- 转债合同范例
- 2024年标准版股权捐赠协议样本版B版
- GB/T 20624.2-2006色漆和清漆快速变形(耐冲击性)试验第2部分:落锤试验(小面积冲头)
- GB/T 12771-2019流体输送用不锈钢焊接钢管
- GB/T 10125-2012人造气氛腐蚀试验盐雾试验
- 维修电工-基于7812稳压电路(中级)-动画版
- PV测试方法简介-IV
- 病理学实验切片考试图片授课课件
- 2021离婚协议书电子版免费
- 国家开放大学《组织行为学》章节测试参考答案
- 《班主任工作常规》课件
- 电子课件机械基础(第六版)完全版
- 临沂十二五城市规划研究专题课件
评论
0/150
提交评论