- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言高级程序设计讲座4
第四讲 BMP文件的艺术再现
鹏程C语言教学网站庆祝建站一周年特别企划
技术支持:29
现在很多软件都有一个好看的封面,封面就像一个软件的门面,从第一感官刺激别人的视线。下面我们先来看一下下面几个软件的封面:
图一 金山WPS Office 办公组合
图二 Adobe Photoshop 6.0
图三 沈阳电力机械总厂财务部成本管理系统II
在C语言中,我们也可以给软件加上一个好的封面,这会给你的程序添色不少。
学习目标
·BMP文件的存储格式
·DOS方式下调用BMP图像的手段
·艺术再现BMP图像
BMP文件的存储格式
BMP 文件是标准的Windows位图文件,有16色、256色、16位真彩色及24位真彩色等格式。客观存在按文件头、图像控制信息、彩色表和位图点阵数据的格式来存储。文件头是定义图像文件的类型、长度等的数据结构:图像控制信息是定义图像颜色格式、图像大小、颜色数等的数据结构:彩色表是定义图像颜色的调色板的数组位图点阵,是定义图像数据的数组。
未经压缩的BMP文件中,位图点阵信息是按扫描线从下至上(bottom to top)存储的,即图像的第一个像素值在位图阵列的左下角,最后一个像素值在位图阵列的右上角。对16色位图,每个像素占4位,每个字节存放相邻的两个像素值,高4位存放的第1个像素值在扫描线的前面,低4位存放的第2个像素值在扫描线后面。对256色位图,1个字节存放1个像素值。对24位位图,颜色表为空,位图数据的每3个字节对应1个像素值,其中每个字节分别对应该像素值的P、R、G值。
DOS方式下调用BMP图像的手段
再现一副非压缩静止位图,主要需下面三个步骤:
·设置显示模式;
·打开位图文件,读取图像控制信息,设置调色板;
·读取位图数据度进行显示。
若图像数据是以堵塞压缩的,那么先解压,然后再按上面的步骤进行。
设置显示模式
随着计算机硬件的不断发展,尤其是显示卡和显示椿性能的提高,显示效果越来越好。图像显示效果主要体现在图像分辨率和颜色两个方面,分辨率反映图像的清晰和谐,而颜色则反映了图像与物体本来颜色的逼真程度。虽然,对一个图形图像界面的评价涉及人的审美观,心理因素等主观原因,但也有客观的标准。高分辨率和真彩色是人分辨率追求的最高目标。现在,性能好的显示卡和显示器(如SUPER VGA)能支持高达1024X768的分辨率,可以表示的颜色数目可达2:4种。对于DOS用户而言,常用的是640X480分辨率/16色、 320X200分辨率/256色和640X480分辨率/256色等几种模式,它们分别是VGA/TVGA中的12h、13h和5dh模式。可通过直接调用DOS的10h中断来设置:
相应的函数定义如下:
int Set640_480 (void)
{
asm mov ax,4fO2h
asm mov bx,OlOlh
asm int lob
if((_AL==0x4f)(_AH==0))
{
return(0);
}
return(1)
}
调色板的设置
在DOS环境下显示Windows位图时,由于DOS调色板与Windows调色板不同,因此需自行设置Windows调色板,这样,图像才能不失真地显示所需的颜色并与原图像颜色相匹配。具体操作是从图像文件中读出彩色表数值,调用函数int86x写入Windows调色板控制区域。
相应的函数定义如下:
void set_windows_palette16(unsigned char bmp_top[])
/*设置调色板*/
{ int i;
unsigned char chg[]={0,1,2,3,4,5,20,7,56,57,58,59,60,61,62,63};
int f[16]={0,4,2,6,1,5,3,8,7,12,10,14,9,13,11,15 };
for(i=O;i-I 5;i++)
(outportb(Ox3c8,chg[f]);
outportb(Ox3c9,bmp top[54+i*4+2]/4);
outportb(Ox3c9,bmp_top[5,~+i*4+ 1 ]/4);
outportb(Ox3c9 ,bmp top [54+i* 4~-0]/4);}
}
int bmp_out(int x,int y,char *bmp_name)
/*打开文件名为*bmp_name的文件,在(x,y)位置输出图像*/
{
int i,j,k,l=0,c1,c2,x1,y1;
unsigned char h,bmp_top[ 128],
您可能关注的文档
最近下载
- 2025年人教版八年级下册语文期末试卷含答案.pdf VIP
- 【新教材】花城版一年级音乐上册(艺术唱游)全册核心素养教案+教学计划(全35页)(2024年).doc VIP
- 二 比较文学的对象、体系与方法.ppt VIP
- 电商直播人才培养模式研究.pptx VIP
- 2020年版中国药典药物检测相关知识考试试卷.docx
- 2025割草机器人市场规模技术路线及竞争格局分析报告.docx
- 体育心理学(第三版) 季浏PPT课件.pptx
- 四年级上册“快乐读书吧” 测试题及答案 .pdf VIP
- 家用空调主板整机可靠性测试标准.docx VIP
- 2025秋教科版(2024)小学科学三年级上册教学计划及进度表(2025-2026学年第一学期).docx VIP
文档评论(0)