ImageVerifierCode 换一换
格式:DOC , 页数:10 ,大小:33.50KB ,
资源ID:10236700      下载积分:8 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/10236700.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(基于C语言的简单的图像演示和研究与实践样本.doc)为本站上传会员【可****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

基于C语言的简单的图像演示和研究与实践样本.doc

1、资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。基于C语言的简单的图像演示和研究与实践 ( 江苏盐城技师学院 计算机系 224002) 摘要: 语言是近年来在国内外得到迅速推广应用的一种计算机语言。 介绍了C语言在在图像演示方面的优势及应用技术与举例关键字: C语言; 图像演示一、 引言C语言作为程序界广泛采用的语言, 诞生于70年代初, 在1975年UNIX第6版公布之后, C语言的突出有点得到了广泛关注, 并由美国电话电报公司(AT&T)贝尔实验室于一九七八年正式发表, 后由美国国家标准学会在此基础上制定了一个C 语言标准, 于一九八三年发表。一般称之为ANSI C。从此之后

2、 C语言语便以其言功能丰富, 表示能力强, 使用灵活方便, 应用面广, 目标程序效率高, 可移植性好, 既具有高级语言的优点, 又具有低级语言的许多特点( 很多的地方都被称为中级语言) , 被广泛的应用于计算机应用的各个领域。C语言已经从方方面面改变了我们的计算机世界, 加快了计算机应用的普及, 并诞生了很多经典的程序, 其中有著名的UNIX、 LINUX等很多代码都是基于C语言编写的, 而且它们以其效率高, 安全性高而成为网络服务器以及相关安全级别较高的领域的首选。二、 技术概述作为图像演示, 方法其实有很多种, 简单的说基本能够分为两大类, 一类是使用编程技术来实现( 比如使用C语言,

3、BASIC语言等) , 另一类则是使用图像演示辅助程序所提供的功能( 比如PPT,Flash等) 。那么在这之中我们为何会选择C语言来作为图像演示的实现方法呢? 我们来看一下如下的比较: 首先我们先来比较一下这两大类的区别, 作为图像演示, 图像演示辅助程序能够帮助我们快速的解决一些简单的图像演示, 可是图像演示所涉及的领域极其广泛, 而图像演示辅助程序却是给这种应用圈定了一个极其狭隘的范围, 而且其只能应用于一些相对比较简单的演示中, 如果当一些演示需要大量的变量计算和复杂的图形绘制的时候图像演示辅助软件就毫无用武之地了。而编程语言, 则能够不受限制的实现任何演示功能, 所有的计算机程序都是

4、有编程语言编写的, 因此只要是图像演示辅助软件能够实现的功能, 编程都能够实现, 而且编程能够实现及其复杂的演示应用, 甚至能够将多台电脑甚至是多台超级电脑联机进行联合运算以演示及其复杂的过程需要, 这是普通的演示辅助程序所无法做到的。其次我们再比较一下编程语言之间为什么我们选择C语言, C语言作为经典的编程语言, 经历了30多年的时光, 已经相当的成熟, 其代码能够几乎不用修改的直接在任何平台上编译使用, C语言的这种可移植行也是选它的原因之一。我们上面也提到过C语言是介于汇编和高级语言之间的, 因此C语言兼顾了高级语言和汇编语言, 使其在应用领域产生了很多1+12的效果。同时图像演示中的图

5、像绘制也是很耗费资源的, 用C语言编写图形和动画的比例非常高。比如在计算机游戏中( 也能够算是依据现实及想象相结合后的一种演示) 。在图像处理中常使用 C 语言图形函数库来进入图形模式和绘制各类图形 ,为了提高代码的效率 ,直接经过和硬件打交道来实现 ,所有图形绘制必须在图形模式下进行 ,BIOS视频服务中断 10H提供了初始化视频模式的方法 ,其功能号为 00H 即AH输入 ,经过调用中断函数 INT86 ( ) 来触发 BIOS视频中断 ,调用显示模式的函数 ,将屏幕设置为图形模式。因此综观各种因素之下, 我们能够发现在图像演示方面的优势。三、 利用C语言实现图像演示的实现方法图像演示大致

6、可分为两大块, 一为数据计算, 这个做为强大功能的C语言, 自然是很简单即可实现的, 另一块则为演示动画的显示层的制作, 接下来我们重点讲一下C语言制作演示动画的技术。C语言绘制动画的技术主要可分为四种。第一种为重画技术。所谓重画技术, 就是在屏幕上绘制出图像后将其擦除, 并重新画下的一个画面。重画技术又可分为直接重画、 双缓冲、 页替换和多缓冲。直接重画就是不断直接重画屏幕, 可分为全屏重画和局部重画, 全屏重画即整个屏幕绘制完成后停留到需要下一画面时将其清屏, 然后重新绘制整个屏幕, 可是作为演示动画, 往往里面并不是所有的图像都是一直改变的, 因此只对要动的区域进行重画, 这就是局部重画

7、因此在使用中我们很少使用全屏重画, 更多的使用的是局部重画。C语言图形函数库为我们提供了用于保存和重画屏幕区域的函数 getimage ( )和putimage ( ) ,提供了内存分配函数 malloc ( )或farmalloc ( )来申请内存空间。双缓冲技术则是在以上的基础上进行的一种发挥, 也就是将下一个页面所需的图像提前画好, 并保存, 当需要调用下一画面时直接有保存的图像替换屏幕中需要替换的内容, 并在后台进行下一画面的绘制。页替换和多缓冲也是在之前的基础上进行的扩展。第二种为异或技术。在逻辑运算中, 当A和B进行异或运算时, 如果A与B 是相同的 ,那么A与B 异或的结果是0

8、 ,如果A与B 是不同的 ,那么A与B 异或的结果是 1。我们在绘制图像时也能够使用这种技术。比如我们先画一条红线, 然后我们再在其上画一条这条红线的异或运算后的线, 这样, 这两条线就抵消了。第三种是调色板技术。在256色和16色模式下, 我们的计算机存在一块调色板, 其实它就是一个储存颜色信息的索引, 一些寄存器。而我们计算机屏幕的每个像素都是由红绿蓝(RGB) 三原色组成够成所有的颜色的。而所谓的调色板技术就是经过改变某些区域的像素的颜色, 来达到动画的效果。最后一种是拉屏技术。拉屏技术实际上是对双缓冲技术的改进, 就是将屏幕中显示的和为显示的构成一个打的缓存区域, 当图像需要移动是只需

9、要将屏幕移动, 然后在移动后的空白区域移入需显示的部分。大个比喻, 将一张地图平铺在你的显示屏上, 当然只有一部分会在屏幕的区域, 而其它部分已经超出了屏幕部分, 而当你想要屏幕上的地图的图像显示偏左一点的位置, 那么你只需要将地图往右拉动, 这样左边的为在屏幕上的部分就填充到了屏幕上。拉屏技术可分为横向拉屏、 纵向拉屏和全方向拉屏。接下来让我们来经过一个简单的例子, 来看看具体是如何制作演示程序的。演示程序制作大致能够分为四步: 第一步, 构思演示程序所要产生的界面。在这一步中, 大家需要考虑的是图像的一些外在因素, 也即是总体分析。像我们这里这个演示程序就比较简单, 就是首先是需要一个五角

10、星, 然后置于屏幕中间, 然后在周围产生闪闪的光芒。第二步是对图像的拆分及细化了, 就是那些图像具体该干什么, 怎么实现。以本例来说, 五角星的绘制我们能够根据五角星的十个转折点以及一个中心来画出五角星的轮廓, 然后对其进行颜色的填充, 使其呈现立体感。而闪闪发光的效果我们能够经过画出不断变化的中心点为圆心的放射线, 而放射线的两个端点有都同在两个同心圆的端点上。第三步, 对要实现的图像进行数据计算方面的考虑, 也就是绘制图像的方法。本例中的五角星的中心点的坐标只要获取屏幕的最大宽度和高度并除以2即可, 另外十个点是平均分布在以中心点为圆心的两个同心圆上, 我们能够使用正弦和余弦来计算她们的位

11、置。闪闪发光的放射线我们同样能够经过正弦和余弦来计算。最后一步则是进入到了实际的C语言程序的编写中去了, 这一步需要有耐心和细心。图像绘制过程中往往会有很多的点, 存储这些点所使用的变量不能混淆, 不然的话会产生不可预料的图像, 而同时, 编程时往往会出现一定的差错, 因此也需要耐心的查找并一一排除。下面我们来看一下本例在C语言中的实现。/*/* TurboC 3.0 下运行经过 */* 红星闪闪的图像演示 */*/#include#include#include#include#include#include#define RED 4#define LIGHTRED 12float rad=

12、3.1415926/180.0;float k=640/480;void star(float,float,float);void shine(int R,int r,int data)int x036,y036;int x136,y136;int i,data0=0;int X=getmaxx()/2,Y=getmaxy()/2; /* 确定屏幕中心坐标(X,Y) */* 闪烁效果的主要代码 */for(i=0;i18;i+)/* 计算放射线上的两个端点 */x0i=X+r*sin(data0+data)*rad);y0i=Y+k*r*cos(data0+data)*rad);x1i=X+R

13、sin(data0+data)*rad);y1i=Y+k*R*cos(data0+data)*rad);/* 反射线端点计算结束 */data+=20;setcolor(random(255); /* 设置随机颜色值 */delay(20);line(x0i,y0i,x1i,y1i); /* 经过计算出的两点画出一条放射线 */* 闪烁代码结束 */void main() /* 主函数, 有本函数开始执行 */float x,y,Radius;int Driver=DETECT,Mode;int step=0;initgraph(&Driver,&Mode,c:TC3);/* 以上为初始化图

14、像模式 */setbkcolor(1);/* 设置背景颜色 */x=getmaxx()/2;y=getmaxy()/2; /* 确定屏幕中心坐标(X,Y) */Radius=getmaxy()/5; /* 五角星的大小由同心圆的大圆决定, 这里大圆的半径取值为屏幕纵坐标的1/5 */star(x,y,Radius); /* 调用五角星绘制函数进行五角星的绘制 */while(!kbhit() /* 未接受都键盘按键时不停的执行一下循环 */* 计算并绘制反射线,并经过循环来重复覆盖原放射线, 以达到闪烁效果 */Radius=getmaxy()/4;step=20+random(40);shi

15、ne(Radius,Radius+step,0);delay(100);step+=20;Radius+=20;shine(Radius,Radius+step,0);delay(100);step+=20;Radius+=20;shine(Radius,Radius+step,0);delay(200);exit(0);void star(float x0,float y0,float R) /* 绘制五角星 */int x5,y5,x15,y15;float r;int i,a=18;/* 计算两个同心圆的十个点的坐标 */for (i=0;i5;i+)xi=x0+R*cos(a*rad)

16、k;yi=y0-R*sin(a*rad);a+=72;r=R*(sin(18*rad)/sin(54*rad);a=54;for(i=0;i5;i+)x1i=x0+r*cos(a*rad)*k;y1i=y0-r*sin(a*rad);a+=72;/* 经过所得点坐标进行五角星的绘制 */setcolor(RED);line(x0,y0,x0,y0);line(x0,y0,x14,y14);line(x0,y0,x14,y14);setfillstyle(SOLID_FILL,RED);floodfill(x14,y14-1,RED);setcolor(RED);line(x0,y0,x2,y

17、2);line(x0,y0,x12,y12);line(x2,y2,x12,y12);setfillstyle(SOLID_FILL,RED);floodfill(x12,y12-1,RED);setcolor(LIGHTRED);line(x0,y0,x10,y10);line(x0,y0,x10,y10);line(x0,y0,x0,y0);setfillstyle(SOLID_FILL,LIGHTRED);floodfill(x10,y0+1,LIGHTRED);setcolor(RED);line(x0,y0,x10,y10);line(x0,y0,x1,y1);line(x10,y1

18、0,x1,y1);setfillstyle(SOLID_FILL,RED);floodfill(x10-1,y10,RED);setcolor(LIGHTRED);line(x1,y1,x11,y11);line(x11,y11,x2,y2);line(x0,y0,x1,y1);line(x0,y0,x2,y2);setcolor(LIGHTRED);line(x0,y0,x12,y12);line(x0,y0,x3,y3);line(x12,y12,x3,y3);setfillstyle(SOLID_FILL,LIGHTRED);floodfill(x12+1,y12+1,LIGHTRED)

19、floodfill(x11+1,y11+1,LIGHTRED);setcolor(RED);line(x0,y0,x3,y3);line(x0,y0,x4,y4);line(x3,y3,x13,y13);line(x13,y13,x4,y4);setfillstyle(SOLID_FILL,RED);floodfill(x13,y13-1,RED);setcolor(LIGHTRED);line(x0,y0,x4,y4);line(x0,y0,x14,y14);line(x4,y4,x14,y14);setfillstyle(SOLID_FILL,LIGHTRED);floodfill(x1

20、4-1,y14+1,LIGHTRED);从以上程序中, 我们应注意到编程时候的模块化, 将不同的部分放在不同的函数里, 然后在主函数中调用, 这样不但能过使程序容易看懂, 结构井井有条, 而且当程序出错以及演示需要调整时能过快速定位, 并能最快的进行修改。而且大家不难看出, 本程序所进行演示时没有用到任何的图像, 全部是由函数计算绘制, 仅仅只用了线条和填充效果即可完成程序的演示图像的绘制, 程序及其的简单明了。四、 结束语在现在科技高速发展的世界中, 越来越多的创造被创造, 越来越多的理论被证实而这些创造及理论等都是需要演示, 需要验证的, 而图像演示正在这其中发挥着越来越重要的作用, 神州飞船的发射成功, 嫦娥奔月计划的顺利实施都是在这不计其数的模拟演示后一次成功的, 而这些复杂而高精度的计算, 正是高效率的C语言所能完成的, 因此我相信C语言在图像演示领域将会得到更广阔的应用。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服