- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VC的CDib类
Visual C++ MFC中没有提供一个专门的类来处理DIB位图,因此,为了方便地使用位图文件,我们有必要派生一个CDib类。类的源代码如下: (1) CDib类的声明 // DIB.h:类CDib声明头文件 #ifndef __DIB_H__ #define __DIB_H__ #include wingdi.h class CDib { public: CDib(); ~CDib(); BOOL Load( const char * ); BOOL Save( const char * ); BOOL Draw( CDC *, int nX = 0, int nY = 0, int nWidth = -1, int nHeight = -1, int mode = SRCCOPY); BOOL SetPalette( CDC * ); private: CPalette m_Palette; unsigned char *m_pDib, *m_pDibBits; DWORD m_dwDibSize; BITMAPINFOHEADER *m_pBIH; RGBQUAD *m_pPalette; int m_nPaletteEntries; }; #endif (2) CDib类的实现 // DIB.cpp:类CDib实现文件 #include stdafx.h #include DIB.h CDib::CDib() { m_pDib = NULL; } CDib::~CDib() { // 如果位图已经被加载,释放内存 if (m_pDib != NULL) delete []m_pDib; } 下面这个函数非常重要,其功能为加载位图,类似于CBitmap类的LoadBitmap函数: BOOL CDib::Load(const char *pszFilename) { CFile cf; // 打开位图文件 if (!cf.Open(pszFilename, CFile::modeRead)) return (FALSE); // 获得位图文件大小,并减去BITMAPFILEHEADER的长度 DWORD dwDibSize; dwDibSize = cf.GetLength() - sizeof(BITMAPFILEHEADER); // 为DIB位图分配内存 unsigned char *pDib; pDib = new unsigned char[dwDibSize]; if (pDib == NULL) return (FALSE); BITMAPFILEHEADER BFH; // 读取位图文件数据 try { // 文件格式是否正确有效 if ( cf.Read(BFH, sizeof(BITMAPFILEHEADER)) != sizeof(BITMAPFILEHEADER) || BFH.bfType != ’MB’ || cf.Read(pDib, dwDibSize) != dwDibSize) { delete []pDib; return (FALSE); } } catch (CFileException *e) { e-Delete(); delete []pDib; return (FALSE); } // delete先前加载的位图 if (m_pDib != NULL) delete m_pDib; // 将临时Dib数据指针和Dib大小变量赋给类成员变量 m_pDib = pDib; m_dwDibSize = dwDibSize; // 为相应类成员变量赋BITMAPINFOHEADER和调色板指针 m_pBIH = (BITMAPINFOHEADER*)m_pDib; m_pPalette = (RGBQUAD*) m_pDib[sizeof(BITMAPINFOHEADER)]; // 计算调色板中实际颜色数量 m_nPaletteEntries = 1 m_pBIH-biBitCount; if (m_pBIH-biBitCount 8) m_nPaletteEntries = 0; else if (m_pBIH-biClrUsed != 0) m_nPalette
您可能关注的文档
- Unit05 Vowels:Front Vowels & Central Vowels.doc
- 崇文高三英语一模试卷.doc
- 翻硕百科知识名词解释(三).doc
- Skyline产品体系.doc
- 勇敢选专业:我选故我爱!.doc
- 英语综合实践.doc
- 兴学教育 高中话题阅读精讲.doc
- 古生物学复习重点汇总+中国地质大学.doc
- alias常见小问题汇总20例.doc
- 脊索动物的演化证据.doc
- 2024年标签贴纸项目资金需求报告代可行性研究报告.docx
- 2024年双门轿跑车项目资金申请报告代可行性研究报告.docx
- 2024年流体机械项目资金筹措计划书代可行性研究报告.docx
- 2024年消费大数据项目资金筹措计划书代可行性研究报告.docx
- 2024年飞机用涂料项目资金需求报告代可行性研究报告.docx
- 2024年运载火箭项目资金需求报告代可行性研究报告.docx
- 2024年运动护具项目资金需求报告代可行性研究报告.docx
- 2024年纳米材料项目资金需求报告代可行性研究报告.docx
- 2024年专业服务项目资金申请报告代可行性研究报告.docx
- 2024年展示照明项目投资申请报告代可行性研究报告.docx
最近下载
- 建材市场物业服务方案.pdf VIP
- 质子泵抑制剂临床应用指导原则2020版.pptx VIP
- 执行民主集中制方面存在不足范文四篇.pdf VIP
- 贵州省贵阳市2023-2024学年高三11月质量监测生物试题(解析版).docx
- 2024年山东省“大学习、大培训、大考试”专项行动(工贸行业)考试题库资料(含答.pdf
- 2025-2028年青年教师三年培养计划及实施方案.docx
- 法理学(西南政大)中国大学MOOC 慕课 章节测验 期末考试答案.docx
- 新教材 高中生物选择性必修一 稳态与调节 复习提纲 知识总结.doc
- T_CECS 1240-2023 弃土场工程技术规程(OCR).pdf
- 许林芳《薪酬绩效》私房课笔记.pdf VIP
文档评论(0)