VC下显示位图的几种方法.doc
上传人:sy****28 上传时间:2024-09-14 格式:DOC 页数:7 大小:41KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

VC下显示位图的几种方法.doc

VC下显示位图的几种方法.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

/*************************************************************/想来想去还是不能叫做原创,毕竟里面的大部分东西都是前辈们的劳动成功我只是收集了一下,所以还是叫学习小结的好!转载请说明出处如有问题欢迎和本人联系讨论:baoliangster@gmail.com由于每次上传只能100K所以就所文件给分开了,分为DemoBitmap1.rar,DemoBitmap.rar下载先解压DemoBitmap.rar,然后把DemoBitmap1.ra解压的内容放到入前一个解压后的文件中,对于里面的位图文件,只能大家自己准备了,为了节省空间,我就没上传.(上传的时候出现了错误可能有两个相同的只要选择一个就可以了。)/*************************************************************/VC下显示位图的几种方法总结一下关于位图的几种用法。说到这还是开头给大家介绍一下,有关位图的知识吧,以及对于我们比较有用的几个关于位图的结构体。一.位图结构如下:----一、BMP文件结构----1.BMP文件组成----BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。----2.BMP文件头----BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。----其结构定义如下:typedefstructtagBITMAPFILEHEADER{WORDbfType;//位图文件的类型,必须为BMDWORDbfSize;//位图文件的大小,以字节为单位WORDbfReserved1;//位图文件保留字,必须为0WORDbfReserved2;//位图文件保留字,必须为0DWORDbfOffBits;//位图数据的起始位置,以相对于位图//文件头的偏移量表示,以字节为单位}BITMAPFILEHEADER;----3.位图信息头BMP位图信息头数据用于说明位图的尺寸等信息。typedefstructtagBITMAPINFOHEADER{DWORDbiSize;//本结构所占用字节数LONGbiWidth;//位图的宽度,以像素为单位LONGbiHeight;//位图的高度,以像素为单位WORDbiPlanes;//目标设备的级别,必须为1WORDbiBitCount//每个像素所需的位数,必须是1(双色),//4(16色),8(256色)或24(真彩色)之一DWORDbiCompression;//位图压缩类型,必须是0(不压缩),//1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一DWORDbiSizeImage;//位图的大小,以字节为单位LONGbiXPelsPerMeter;//位图水平分辨率,每米像素数LONGbiYPelsPerMeter;//位图垂直分辨率,每米像素数DWORDbiClrUsed;//位图实际使用的颜色表中的颜色数DWORDbiClrImportant;//位图显示过程中重要的颜色数}BITMAPINFOHEADER;----4.颜色表颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。RGBQUAD结构的定义如下:typedefstructtagRGBQUAD{BYTErgbBlue;//蓝色的亮度(值范围为0-255)BYTErgbGreen;//绿色的亮度(值范围为0-255)BYTErgbRed;//红色的亮度(值范围为0-255)BYTErgbReserved;//保留,必须为0}RGBQUAD;颜色表中RGBQUAD结构数据的个数有biBitCount来确定:当biBitCount=1,4,8时,分别有2,16,256个表项;当biBitCount=24时,没有颜色表项。位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下:typedefstructtagBITMAPINFO{BITMAPINFOHEADERbmiHeader;//位图信息头RGBQUADbmiColors[1];//颜色表}BITMAPINFO;下面我们介绍第一种办法://第一种方法,使用WM__CTRLCOLOR来实现/*******************OnCtlColor中添加的代码*****************/HBRUSHCDemoBitmapDlg::OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor){HBRUSHhbr=CDialog::OnCtlColor(pDC,pWnd,nCtlColor);//TODO:ChangeanyattributesoftheDChere//第