首页 C程序绘图

C程序绘图

举报
开通vip

C程序绘图 第2期 收稿日期:2009-04-24 作者简介:程 进(1958- ),男,讲师,主要从事机械原理及机械设计的教学与研究。 众所周知,C语言是函数式的语言,各种不同版 本的C语言提供了十分丰富的库函数,C语言也提供 了较强的图形处理函数,现以较为常用的TURBOC2 为例介绍如何利用图形处理函数绘图。 1 图形模式的初始化 在使用图形函数编程之前,要先进行初始化处 理,即将字符模式转化为图形模式。PC机有多种控 制显示的图形卡,TURBOC2一般支持8种常用的图 形卡,它们分别是: 彩色图形卡 CGA ...

C程序绘图
第2期 收稿日期:2009-04-24 作者简介:程 进(1958- ),男,讲师,主要从事机械原理及机械 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 的教学与研究。 众所周知,C语言是函数式的语言,各种不同版 本的C语言提供了十分丰富的库函数,C语言也提供 了较强的图形处理函数,现以较为常用的TURBOC2 为例介绍如何利用图形处理函数绘图。 1 图形模式的初始化 在使用图形函数编程之前,要先进行初始化处 理,即将字符模式转化为图形模式。PC机有多种控 制显示的图形卡,TURBOC2一般支持8种常用的图 形卡,它们分别是: 彩色图形卡 CGA 多色图形阵列卡 MCGA 增强图形适配器 EGA,EGA64,EGAMONO IBM8514适配器 视频图形阵列 VGA 大力神图形适配器 GERCMONO AT&T400线图形适配器 ATT400 3270PC图形适配器 PC3270 不同的图形卡有不同的显示模式,在每一种显 示模式下具有不同的分辨率和颜色值。所谓分辨 率就是将屏幕划分为许多点,例如分辨率为320× 200 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示将屏幕划分为320×200个点,每一个点称 为一个像素,每个像素有一个坐标,左上角为(0,0), 右下角坐标为(319,199)。分辨率越高,则图形越清 晰。TURBOC支持的图形显示模式如表1所示: C程序绘图 程 进 (四川省工业贸易学校,四川 成都 610081) 【摘 要】C语言是目前世界上流行,使用最广泛的、面向过程的高级程序设计语言,许多大型应用软件都是用C语言编写 的,C是函数式的语言,利用 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 库函数和自己设计的函数可以完成许多功能。C语言具有绘图能力强、可移植性,并且具备很 强的数据处理能力,因此适于编写系统软件、三维、二维图形和动画,它是数值计算的高级语言,本文以较为常用的TURBOC2为 例介绍如何利用图形处理函数绘图问题。 【关键词】C程序;函数绘图;图形处理 【中图分类号】TP319.41 【文献标识码】A 【文章编号】1673-1891(2009)02-0051-04 表1 TURBOC支持的图形显示模式 图形模式 CGA0,CGA1,CGA2,CGA3 CGAHI MCGA0,MCGA1,MCGA2,MCGA3 MCGAMED MCGAHI EGALO EGAHI EGA64LO EGA64HI EGAMONOHI HERCMONOHI ATT400C0,ATT400C1,ATT400C2,ATT400C3 ATT400MED ATT400HI VGALO VGAMED VGAHI PC3270HI 图形卡 CGA MCGA EGA EGA64 EGAMONO HERCMONO ATT400 VGA PC3270 分辨率 320×200 640×200 320×200 640×200 640×480 640×480 640×200 640×200 640×350 640×350 720×348 320×200 640×200 640×400 640×200 640×350 640×480 720×350 颜色数 4 2 4 2 2 16 16 16 4 4 2 4 2 2 16 16 16 2 西昌学院学报·自然科学版 Journal of Xichang College·Natural Science Edition 第23卷第2期 2009年6月 Vol.23,NO.2 Jun.,2009 西昌学院学报·自然科学版 第23卷 TURBBOC的图形初始化由initgraph函数完成, 使用该函数应包含graphics.h头文件。该函数的功 能是选定图形驱动程序及显示模式,一般格式为: initgraph(&gd,&gm,””),其中gd为驱动程序,gm为显 示模式。目前大多数微机的驱动程序为VGA,显示 模式为VGAHI,因此,初始化一般格式可这样设置: gd=VGA;gm=VGAHI;initgraph(&gd,&gm,””)。 也可自动检测驱动程序和显示模式,下面的小 程序就能自动检测: #include main() { int gd,gm,x,a,b,p,k,s; gd=DETECT; /*自动检测*/ initgraph(&gd,&gm,””); x=getmaxcolor()+1;/获取最大颜色数*/ a=getmaxx();/*获取最大X座标*/ b=getmaxy();/*获取最大Y座标*/ k=getdrivername();/*获取图形驱动程序名*/ s=getmodename(gm);/*获取图形模式*/ p=getgraphmode():/*获取图形模式值*/ closegraph(); printf(”maxcolor:%d\n”,x); printf(”maxx:%d\n”,a); printf(”maxy:%d\n”,d); printf(”graphdriver:%-20s%d\n,k,gd); printf(”graphmode:%-20s%d\n,k,s,p); getch(); } 2 颜色设置 在绘图时要设置颜色,目前大多数微机提供16 种颜色,其颜色及代号如表2所示: 表2 绘图颜色及代号 颜色 黑色 蓝色 绿色 青色 代号 0 1 2 3 颜色 红色 紫红色 褐色 浅灰 代号 4 5 6 7 颜色 深灰 浅蓝 浅绿 淡青 代号 8 9 10 11 颜色 淡红 浅紫 黄色 白色 代号 12 13 14 15 颜色设置通常要设置前景色和背景色,前景色 由setcolor()函数设置,背景色由setbkcolor()函数设 置。例如:setcolor(1)表示前景色为蓝色,setbkcolor (4)表示背景色为红色。 前景色一般不能和背景色相同,如相同则图形 不可见,也可用这种方式实现动画显示。下面的程 序就是将各种颜色及代号显示在屏幕上。 #include #include main() { int I,gm,gd; char a [1] gd=DETECT; initgraph(&gd,&gm,””); for(i=1;I <=15;i++) { itoa(i,a,10;/*数字转化为字符*/ setcolor(i); rectangle(20+40*(i-1),0,60+40*(i-1),479);/*画矩 形*/ setfillstyle(1,i); floodfill(40+40*(i-1),240,i); setcolor(i+2); settextstyle(3,0,2); outtextxy(40+40*(i-1),240,a); } getch(); } 3 填充模式设置 在图形绘制时,有时需要对一块封闭区域填 充,就需要设置填充模式,用setfillstyle函数设置,其 格式为:setfillstyle(pattern,color),color为填充的颜色, pattern为填充模式,不同模式见表3: 利用floodfill()函数填充,例如floodfill(x,y,z)表示 用当前的填充模式填充以(x,y)为起点的被颜色为z 封闭的区域。下面的程序就是以不同模式填充一 个太极图。 #include #include main() { int gdriver=VGA,gmode=VGAHI,i; initgraph(&gdriver,&gmode,””)/*初始化*/ ·· 52 第2期 表3 绘图填充模式 代号 0 1 2 模式 背景色填充 单色填充 横线填充 代号 3 4 5 模式 左斜线填充 粗左斜线填充 粗右斜线填充 代号 6 7 8 模式 右斜线填充 浅影填充 淡交叉线填充 代号 9 10 11 模式 交叉线填充 松空白填充 紧空白点填充 for(i=0;i<=12;i++) { cleardevice();/*清屏*/ setcolor(1);/*前景色*/ arc(320,240,0,180,200);/*画弧*/ arc(420,240,180,360,100); arc(220,240,0,180,100); setfillstyle(i,1);/*设置模式*/ floodfill(320,200,1);/*填充*/ setcolor(4); arc(420,240,180,360,100); arc(220,240,0,180,100); arc(320,240,180,360,200); setfillstyle(i,4); floodfill(320,280,4); circle(420,240,35); floodfill(420,240,4); setcolor(1); circle(220,240,35);/*画圆*/ setfillstyle(i,1); floodfill(220,240,1); sleep(1);/*暂停1秒*/ } getch();/*等待输入*/ closegraph();/*关闭图形模式*/ } 4 常用的一些画简单图形的函数 bar(x1,y1,x2,y2)功能是用当前填充模式和填充 颜色画一填充长方形,长方形顶点坐标为(x1,y1)和 (x2,y2)。circle(x,y,r)功能是以(x,y)为圆心r为半径画 圆。line(x1,y1,x2,y2)功能是画一直线,顶点为(x1,y1) 和(x2,y2)。Rectangle(x1,y1,x2,y2)功能是画一矩形, 其对角线顶点为(x1,y1)和(x2,y2)。 下面的程序的功能就是产生各种图形。 #include #include #include main() { int gdriver=VGA,gmode=VGAHI; initgraph(&gdriver,&gmode,””); pcircle(); prectangle(); pling(); pbar(); } pcircle() { cleardevice(); while(!kbhit())/*当无键击下时循环*/ { setcolor(random(14)+1);/*随机设置前景颜色*/ circle(random(640),random(480),random(60));/* 画 随机圆*/ } getch(); } prectangle() { cleardevice(); while(!kbhit()) { setcolor(random(14)+1); rectangle(random(640),random(480),random(640), random(480)); } getch(); } pline(); { cleardevice(); while(!kbhit()) { setcolor(random(14)+1); ling(random(640),random(480),320,240);/*画直线 */ } getch(); } pbar() 程 进:C程序绘图 ·· 53 西昌学院学报·自然科学版 第23卷 { int a,b,c,d; cleardevice(); while(!kbhit()) { setfillstyle(random(12),random(14)+1); a=random(640); b=random(480); c=random(640); d=random(480); bar(a,b,c,d);/*画填充矩形*/ } getch(); } 5 图形模式下的文本输出 在字符模式下文本的输出常常采用printf函数, 在图形模式下要用settextstyle函数设置文本字形、显 示方向和字符的大小。其格式为 settextstyle(font, direction,charsize),font为字形设置参数,其值和对应 的字形如下:0 8×8位图字形;1 三倍笔划字形;2 小号笔划字形;3 无衬线笔划字形;4 黑体笔划字形。 derection为显示方向参数,它有两个值,值为0 时表示从左向右显示,值为1时表示从下向上显示。 Charsize为字符放大因子。其值为0表示字符 放大因子为4,即字符显示在4×4像素矩形区域内; 其值为1表示放大因子为8,即字符显示在8×8像 素矩形区域内;其值为3表示字符显示在16×16像 素矩形区域内;依此类推,最大到普通大小的10倍。 字符显示模式设置好后,就可用outtextxy函数 将文本输出来,其格式为outtextxy(x,y,str),参数x和y 表示文本输出的起始坐标,str为输出的字符串。 下面的小程序的功能是将字符串ABCDEFG以 不同的字形和大小按水平方式显示。 #include main() { int GraphDriver,GraphMode,h,i; GraphDriver=DETECT; initgraph(&GraphDriver,&GraphMode,””); for(h=0;h <=4;h++) { for(i=1;i <10;i++) { setcolor(15); settextstyle(h,0,i);/*设置文本模式*/ outtextxy(100,200,”ABCDEFG”);/*输出文本*/ sleep(1);/*暂停1秒钟*/ setcolor(0); orttextxy(100,200,”ABCDEFG”); } } setcolor(4); settextstyle(3,0,10); orttextxy(100,200,”OVER!”); getch(); closegraph(); } 6 其它函数介绍 cleardevice()的功能是清除屏幕。closegraph()的 功能是关闭图形模式,回到文本模式。(注:所有程 序都在PC机上运行通过) 注释及参考文献: [1]谭浩强.C程序设计[M].北京:清华大学出版社,1991. [2]谭浩强.C程序设计题解[M].北京:清华大学出版社,1992. [3]吕涛, 吕凤翥.C程序设计实用问答[M].北京:北京大学出版社,1997. Function Cartography with C Procedure CHENG Jin (Industry-trade School of Sichuan,Chengdu,Sichuan 610081) Abstract: C is one of the most popular and widely used programming languages. The philosophy of c is that it is an imperative(procedural)systems implementation language. Although C was designed for implementing system software,it is also widely used for developing portable application software. Much large-scale application software is written with C. In C,all executable code is contained within functions by accessing standard C library function and using self-defined functions to accomplish many functions. Due to combination of desirable (下 转 59 页) ·· 54 第2期 (Department of Electronic Engineering,Yingkou Vocational and Technical College,Yingkou,Liaoning 115000) Abstract: This paper puts forward one kind of teaching forum that 2000 data bases making use of ASP technology union SQL Server structure,that a forum based on B/S structure,structure of Yu WEB server,and to assist combining with the FTP technology for assist teaching,and discusses systematic construction and its technology and method . Key words: Campus net;Education Forum;Assist teaching system (College of Territorial Resources and Tourism,Anhui Normal University,Wuhu,Anhui 241000) Abstract: ArcGIS Engine is an embedded type component library newly launched by ArcGIS9. This paper introduces the technologies of the ArcGIS Engine and. NET,using C# language and ArcGIS Engine components to develop a special thematic map rendering system,and expound design flow for the system and some of the main functions of the implementation. Key words: ArcGIS engine;C#.NET;Thematic map rendering 􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅 (上接35页) characteristics such as code portability,strong graphic design capacity and data processing, C is suitable implementing system software, three and two dimensional graphic design, and the animation. It is the higher order language of value computation. This article takes more commonly used TURBOC2 as the example to introduce how to process function cartography question by using graphic processing. Key words: C procedure;Function cartography;Graph processing 􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅􀤅 (上接54页) 李 博:基于教学论坛的辅助教学系统的研究与实现 ·· 59
本文档为【C程序绘图】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_682574
暂无简介~
格式:pdf
大小:1MB
软件:PDF阅读器
页数:5
分类:互联网
上传时间:2010-03-05
浏览量:16