- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
纯C语言开发-毕业论文(电子相册)[毕业设计,精品论文]推荐
(C语言)电子相册
摘要:对于java,.net,C++等一些面向对象的语言来说,结合相应的开发工具做出一个电子相册并非难事,相信只要是会编程的人应该都会。但是如果用纯 C 语言在 DOS 下显示出真彩的图片并不是一件很容易的事。它涉及到各方面的知识,包括像素的描绘、排列,调色板的调用,图片格式的分析。本文主要介绍我用纯 C 语言开发一个电子相册的过程,以及用到的一些关键技术,包括前面锁提到的技术另外还有链表的创建,以及常用的图片显示技术和汉字显示技术。
关键词:电子相册、bmp图片格式、链表、汉字显示、存储算法、文件结构
目录
引言 2
第一章 可行性分析 2
? 1.1什么是电子相册 ...2
? 1.2 系统的可行性分析 3
? 1.2.1 市场可行性 3
? 1.2.2 技术可行性 3
第二章 系统概述 3
? 1.1开发工具及环境 3
? 1.2 系统功能简介 3
第三章 系统总体结构设计 3
? 3.1 系统功能模块划分 3
第四章 详细设计 4
? 4.1 系统流程图 4
? 4.2界面显示模块 4
? 4.2.1 汉字显示技术 4
? 4.3功能选择模块 5
? 4.4图片浏览模块(自动浏览模式、手动浏览模式) 6
? 4.4.1 链表的创建 6
? 4.4.2 BMP图片显示 7
? 4.4.3 BMP图片格式文件结构分析 7
? 4.4.4 BMP图片存储算法 9
? 4.4.5 BMP图片的显示方法 9
第五章 总结 10
致谢 10
参考文献 10
引言
随着社会的不断发展,计算机已经逐渐普及,几乎渗入到人们生活中的每一个角落。人们的日常生活已经越来越离不开计算机了。计算机软件的发展更是日新月异。现在好多人都喜欢把自己的照片或是一些美丽的图片制作成电子相册,以动画的方式并加以特效去浏览。网上各种各样的电子相册层出不穷,但是还从来没有看到一个用 C 语言写的电子相册。本人在学习 C 语言之际,突发奇想用 C 语言写一个电子相册,在 DOS 系统下实现图片的浏览,虽然它没有任何经济价值,但可以供学习参考。
第一章 可行性分析电子相册是指可以在电脑上观赏的区别于CD/VCD的静止图片的特殊文档,其内容不局限于摄影照片,也可以包括各种艺术创作图片。电子相册具有传统相册无法比拟的优越性:图、文、声、像并茂的表现手法,随意修改编辑的功能,快速的检索方式,永不褪色的恒久保存特性,以及廉价复制分发的优越手段。
随着个性化时代的来临和人们生活水平的不断提高,人们的生活方式也变得时尚起来了,校园生活,天真浪漫,同窗友情,张张照片为您定格;缘定三生,从恋爱到结婚,一张张照片记下了浪漫史,意义非凡;宝宝长大了,照片一张一个样,天真童趣,您想珍藏这些照片吗?欣赏昔日身姿,却因照片静态的表现方式让人觉得枯燥;一项活动结束了,留下一叠杂乱无章的照片;一本本厚重的相册,一张张因保存不善而失去往日风采甚至毁损的照片,真有些不忍面对,一种新的留念方式系统概述
4.2界面显示模块
4.2.1 汉字显示技术
汉字显示主要包括汉字的读取和显示两个步骤,由于中文汉字太多,中文汉字的显示通常都要用到汉字库。中文字库有两大类型:点阵式字库,矢量字库。点阵式字库通过将中文字看陈由一个个点组成的二维阵列来显示实现,如放大文字则会出现明显的不平滑现象;矢量字库则通过对文字每个笔画的起点和终点的记录来完成文字的显示,其效果较好,无论字的大小都可以保证字体圆滑。
本系统采用的是点阵汉字显示技术。先将要显示的汉字的点阵信息全部存储到一个头文件(word.h)中,再调用drawmat函数将所要显示的汉字画出来。具体代码如下:
void drawmat(char *mat,int matsize,int x,int y,int color) /*依次:字模指针,点阵大小,起始坐标(x,y),颜色*/
{ int i, j, k, n;
n = (matsize - 1) / 8 + 1;
for(j = 0; j matsize; j++)
for(i = 0; i n; i++)
for(k = 0;k 8; k++)
if(mat[j * n + i] (0x80 k)) /*测试为1的位则显示*/
putpixel(x + i * 8 + k, y + j, color);
}
4.3功能选择模块
该模块的功能实现主要是用到了图形区域的重绘显示,并返回屏幕的纵坐标值,以实现功能的选择。
主要代码实现如下:
int workinterface()
{ char key;
int x=220,y1=140,y2;
initgr(1); /*打开图形模式*/
文档评论(0)