VC图像编程教案 第三章
创始人
2025-12-13 12:48:17
0

VC图像编程教案 第三章

VC图像编程教案 第三章 3 DIB类的高级应用。 3.1 BMP文件结构 BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。 typedef struct tagBITMAPFILEHEADER { WORDbfType; // 位图文件的类型,必须为BM DWORD bfSize; // 位图文件的大小,以字节为单位 WORDbfReserved1; // 位图文件保留字,必须为0 WORDbfReserved2; // 位图文件保留字,必须为0 DWORD bfOffBits; // 位图数据的起始位置,以相对于位图 // 文件头的.偏移量表示,以字节为单位 } BITMAPFILEHEADER; BMP位图信息头数据用于说明位图的尺寸等信息。 typedef struct tagBITMAPINFOHEADER{ DWORD biSize; // 本结构所占用字节数 LONGbiWidth; // 位图的宽度,以像素为单位 LONGbiHeight; // 位图的高度,以像素为单位 WORD biPlanes; // 目标设备的级别,必须为1 WORD biBitCount// 每个像素所需的位数,必须是1(双色), // 4(16色),8(256色)或24(真彩色)之一 DWORD biCompression; // 位图压缩类型,必须是 0(不压缩), // 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一 DWORD biSizeImage; // 位图的大小,以字节为单位 LONGbiXPelsPerMeter; // 位图水平分辨率,每米像素数 LONGbiYPelsPerMeter; // 位图垂直分辨率,每米像素数 DWORD biClrUsed;// 位图实际使用的颜色表中的颜色数 DWORD biClrImportant;// 位图显示过程中重要的颜色数 } BITMAPINFOHEADER; typedef struct tagRGBQUAD { BYTErgbBlue;// 蓝色的亮度(值范围为0-255) BYTErgbGreen; // 绿色的亮度(值范围为0-255) BYTErgbRed; // 红色的亮度(值范围为0-255) BYTErgbReserved;// 保留,必须为0 } RGBQUAD; 颜色表中RGBQUAD结构数据的个数有biBitCount来确定: 当biBitCount=1,4,8时,分别有2,16,256个表项; 当biBitCount=24时,没有颜色表项。 位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下: typedef struct tagBITMAPINFO { BITMAPINFOHEADER bmiHeader; // 位图信息头 RGBQUAD bmiColors[1]; // 颜色表 } BITMAPINFO; 3.2 DIB类的Read函数: BOOL CDib::Read(CFile* pFile) { // 1. read file header to get size of info hdr + color table // 2. read info hdr (to get image size) and color table // 3. read image // cant use bfSize in file header Empty(); int nCount, nSize; BITMAPFILEHEADER bmfh; try { nCount = pFile->Read((LPVOID) &bmfh, sizeof(BITMAPFILEHEADER)); if(nCount != sizeof(BITMAPFILEHEADER)) { throw new CException; } if(bmfh.bfType != 0x4d42) { throw new CException; } nSize = bmfh.bfOffBits - sizeof(BITMAPFILEHEADER); m_lpBMIH = (LPBITMAPINFOHEADER) new char[nSize]; m_nBmihAlloc = m_nImageAlloc = crtAlloc; nCount = pFile->Read(m_lpBMIH, nSize); // info hdr & color table ComputeMetrics(); ComputePaletteSize(m_lpBMIH->biBitCount); MakePalette(); m_lpImage = (LPBYTE) new char[m_dwSizeImage]; nCount = pFile->Read(m_lpImage, m_dwSizeImage); // image only } catch(CException* pe) { AfxMessageBox(Read error); pe->Delete(); return FALSE; } return TRUE; } 3.3 DIB类的Write函数: BOOL CDib::Write(CFile* pFile) { BITMAPFILEHEADER bmfh; bmfh.bfType = 0x4d42; // BM int nSizeHdr = sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries; bmfh.bfSize = 0; //bmfh.bfSize = sizeof(BITMAPFILEHEADER) + nSizeHdr + m_dwSizeImage; // meaning of bfSize open to interpretation (bytes, words, dwords?) -- we wont use it bmfh.bfReserved1 = bmfh.bfReserved2 = 0; bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries; try { pFile->Write((LPVOID) &bmfh, sizeof(BITMAPFILEHEADER)); pFi

le->Write((LPVOID) m_lpBMIH, nSizeHdr); pFile->Write((LPVOID) m_lpImage, m_dwSizeImage); } catch(CException* pe) { pe->Delete(); AfxMessageBox(write error); return FALSE; } return TRUE; } 3.4 明确图像文件 CFile CDib类三者之间的关系 3.5 尝试直接用CDib类的m_lpImage成员读取图像数据。 3.6 尝试通过Write保存图像到另一个位置 3.7 尝试通过Write重写原图像文件(注意保存)

相关内容

热门资讯

《弟子规》教案4、5 《弟子规》教案4、5课 题 第4课 “入则孝”之“事虽小” 学 习 目 标 1、复习“冬则温”。 2...
《石头书》说课稿和教案 《石头书》说课稿和教案《石头书》第一课时教案设计教学内容:苏教版实验教材,P95--98第17课《石...
语文教案-屈 原 列 传 语文教案-屈 原 列 传屈 原 列 传司马迁一、教学目的:1、学习本文夹叙夹议的写法。掌握“令”、“...
母亲节儿童绘画教案 母亲节儿童绘画教案  作为一名为他人授业解惑的教育工作者,常常要根据教学需要编写教案,教案有利于教学...
人美版美术教材第6册教案1-... 人美版美术教材第6册教案1-6课(转)第一课、我们的社区 教学目标: 1、观察了解自己社区的人物活...
《美丽的盘子》教案 《美丽的盘子》教案三月份校内“一人一课”教案 宝应县开发区国际学校美术备课用纸 课 题 5.美丽的...
挑山工教案 挑山工教案挑山工 教案教学过程:(一)创设情境,导入新课1、有人说人生是一场梦,有人说人生是享受,也...
教案:吨的认识 教案:吨的认识第五课时:吨的认识 师素文教站提供 教学内容:教材第11—12页 教学目标:1、让学生...
期末复习班会教案 期末复习班会教案(精选17篇)  作为一名教师,时常要开展教案准备工作,教案是教学活动的依据,有着重...
四下《品德与社会》教案 四下《品德与社会》教案 四年级下册《品德与社会》教案 一、教材的设计与编写特点 1、采用核心课程的设...
PEP小学英语五下Recyc... PEP小学英语五下Recycle 1教案Recycle 1 一、单元内容分析 本单元是对1—3单元...
大班教案:翻跟头 大班教案:翻跟头(精选12篇)  作为一位杰出的老师,很有必要精心设计一份教案,教案是备课向课堂教学...
小学四年级数学《折线统计图》... 小学四年级数学《折线统计图》教案  教学目标  1. 使学生在具体情境中认识简单的折线统计图,了解折...
幼儿园美术欣赏教案 培养小朋友对美术的兴趣,对学习是很有帮助的,幼儿园美术欣赏教案。幼儿园美术欣赏教案范文,欢迎大家阅读...
《两只小狮子》优秀教案 《两只小狮子》优秀教案  作为一位杰出的老师,有必要进行细致的教案准备工作,教案是教材及大纲与课堂教...
南瓜花教案 南瓜花教案二年级音乐 《南瓜花》 教学目标: 一、通过学习本课音乐作品,从音乐中感受所描绘的花的形象...
小学五年级一去二三里教案 小学五年级一去二三里教案  一、教学设计思想  本课是识字教学的第一课,课文内容大多学生在学龄前已经...
幼儿园的识字游戏教案 教幼儿识字看似一件很枯燥的事,很多幼儿都不太愿意认字。其实,只要借助幼儿园识字游戏,让幼儿在玩中识字...
《明天不封阳台》优秀教案 《明天不封阳台》优秀教案  教学目标:  1.初读课文,以是否封阳台为线索,整体感知文章的内容和结构...
《抛抛乐》中班体育教案 《抛抛乐》中班体育教案  活动目标  1.锻炼幼儿的体能。  2.锻炼幼儿的抛掷能力和接物的准确性。...