资源简介
用VC++开发的,完全用API函数编写的DIB图像的打开与保存、显示
代码片段和文件信息
// cdib.cpp
#include “stdafx.h“
#include “math.h“
#include “process.h“
#include “cdib.h“
#include “GlobalApi.h“
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// 声明串行化过程
IMPLEMENT_SERIAL(CDib Cobject 0);
/*************************************************************************
*
* \函数名称:
* CDib()
*
* \输入参数:
* 无
*
* \返回值:
* 无
*
* \说明:
* 构造函数
*
************************************************************************
*/
CDib::CDib()
{
m_hFile = NULL;
m_hBitmap = NULL;
m_hPalette = NULL;
m_nBmihAlloc = m_nImageAlloc = noAlloc;
Empty();
}
/*************************************************************************
*
* \函数名称:
* CDib()
*
* \输入参数:
* CSize size - 位图尺寸
* int nBitCount - 象素位数
*
* \返回值:
* 无
*
* \说明:
* 构造函数
* 根据给定的位图尺寸和象素位数构造CDib对象,并对信息头和调色板分配内存
* 但并没有给位图数据分配内存
*
************************************************************************
*/
CDib::CDib(CSize size int nBitCount)
{
m_hFile = NULL;
m_hBitmap = NULL;
m_hPalette = NULL;
m_nBmihAlloc = m_nImageAlloc = noAlloc;
Empty();
// 根据象素位数计算调色板尺寸
ComputePaletteSize(nBitCount);
// 分配DIB信息头和调色板的内存
m_lpBMIH = (LPBITMAPINFOHEADER) new
char[sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries];
// 设置信息头内存分配状态
m_nBmihAlloc = crtAlloc;
// 设置信息头中的信息
m_lpBMIH->biSize = sizeof(BITMAPINFOHEADER);
m_lpBMIH->biWidth = size.cx;
m_lpBMIH->biHeight = size.cy;
m_lpBMIH->biPlanes = 1;
m_lpBMIH->biBitCount = nBitCount;
m_lpBMIH->biCompression = BI_RGB;
m_lpBMIH->biSizeImage = 0;
m_lpBMIH->biXPelsPerMeter = 0;
m_lpBMIH->biYPelsPerMeter = 0;
m_lpBMIH->biClrUsed = m_nColorTableEntries;
m_lpBMIH->biClrImportant= m_nColorTableEntries;
// 计算图象数据内存的大小,并设置此DIB的调色板的指针
ComputeMetrics();
// 将此DIB的调色板初始化为0
memset(m_lpvColorTable 0 sizeof(RGBQUAD) * m_nColorTableEntries);
// 暂时不分配图象数据内存
m_lpImage = NULL;
}
/*************************************************************************
*
* \函数名称:
* ~CDib()
*
* \输入参数:
* 无
*
* \返回值:
* 无
*
* \说明:
* 析构函数,并释放所有分配的DIB内存
*
************************************************************************
*/
CDib::~CDib()
{
Empty();
}
/*************************************************************************
*
* \函数名称:
* GetDimensions()
*
* \输入参数:
* 无
*
* \返回值:
* CSize - DIB的宽度和高度
*
* \说明:
* 返回以象素表示的DIB的宽度和高度
*
************************************************************************
*/
CSize CDib::GetDimensions()
{
if(m_lpBMIH == NULL) return CSize(0 0);
return CSize((int) m_lpBMIH->biWidth (int) m_lpBMIH->biHeight);
}
/*************************************************************************
*
* \函数名称:
* AttachMapFile()
*
* \输入参数:
* const char* strPathname - 映射文件的路径名
* BOOL bShare -
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 38635 2006-05-30 01:08 DIBDisplay\cdib.cpp
文件 3645 2006-05-30 01:08 DIBDisplay\cdib.h
文件 1736 2006-05-30 01:08 DIBDisplay\ChildFrm.cpp
文件 1456 2006-05-30 01:08 DIBDisplay\ChildFrm.h
文件 65095 2006-05-30 01:08 DIBDisplay\ColorTable.h
文件 66336 2009-07-08 21:49 DIBDisplay\Debug\cdib.obj
文件 0 2009-07-08 21:49 DIBDisplay\Debug\cdib.sbr
文件 17621 2009-07-08 21:49 DIBDisplay\Debug\ChildFrm.obj
文件 0 2009-07-08 21:49 DIBDisplay\Debug\ChildFrm.sbr
文件 3499008 2009-07-08 21:49 DIBDisplay\Debug\DIBDisplay.bsc
文件 159864 2009-09-25 20:16 DIBDisplay\Debug\DIBDisplay.exe
文件 500104 2009-09-25 20:16 DIBDisplay\Debug\DIBDisplay.ilk
文件 24509 2009-07-08 21:49 DIBDisplay\Debug\DIBDisplay.obj
文件 7067436 2009-07-08 21:49 DIBDisplay\Debug\DIBDisplay.pch
文件 640000 2009-09-25 20:16 DIBDisplay\Debug\DIBDisplay.pdb
文件 8024 2009-07-08 20:41 DIBDisplay\Debug\DIBDisplay.res
文件 0 2009-07-08 21:49 DIBDisplay\Debug\DIBDisplay.sbr
文件 39410 2009-07-08 21:49 DIBDisplay\Debug\DIBDisplayDoc.obj
文件 0 2009-07-08 21:49 DIBDisplay\Debug\DIBDisplayDoc.sbr
文件 37081 2009-09-25 20:16 DIBDisplay\Debug\DIBDisplayView.obj
文件 0 2009-07-08 21:49 DIBDisplay\Debug\DIBDisplayView.sbr
文件 18452 2009-09-25 10:49 DIBDisplay\Debug\DibImage.obj
文件 0 2009-07-08 21:49 DIBDisplay\Debug\DibImage.sbr
文件 23895 2009-09-25 09:48 DIBDisplay\Debug\DIBPrcs.obj
文件 0 2009-07-08 21:49 DIBDisplay\Debug\DIBPrcs.sbr
文件 19766 2009-07-08 21:49 DIBDisplay\Debug\MainFrm.obj
文件 0 2009-07-08 21:49 DIBDisplay\Debug\MainFrm.sbr
文件 106326 2009-07-08 21:49 DIBDisplay\Debug\StdAfx.obj
文件 1375966 2009-07-08 21:49 DIBDisplay\Debug\StdAfx.sbr
文件 279552 2009-09-25 20:16 DIBDisplay\Debug\vc60.idb
............此处省略35个文件信息
- 上一篇:影碟出租系统
- 下一篇:数据结构课程设计图书管理系统c语言实现
相关资源
- MFC+Opencv 摄像头保存为图像和视频
- mfc打开各种类型图片范例
- vc++调用usb摄像头,进行拍照,保存为
- MFC实现打开外部程序
- MFC画图板绘图并保存图片导出
- 用openCV实现图像灰度化并保存,MFC实
- OpenCV打开图片和网络摄像头(C++)
- 用VC++实现打开并显示bmp图片
- C++生成二维码并保存成BMP图片
- MFC读取二进制文件并保存为文本文件
- 记事本自动保存 小程序 vc++ 时间间
- MFC解决窗口保存及重绘闪烁问题的一
- MFC解决窗口保存及重绘闪烁问题的一
- C++用Opencv将图片转化为灰度图并保存
- 图书管理系统用C++编写的图书管理系
- 数字图像处理——MFC实现DICOM图像打开
- opencv 保存录像
- 基于C++的三菱机床实时数据采集可运
- MFC窗口打开ppt,可通过UDP控制。
- MFC+VS2013+OPENCV3.0打开摄像头,拍照并处
- MFC 绘制半透明文字并保存为背景透明
- VS2015MFC+Opencv2 打开图片及简单的图像
- MFC实现Button控件打开本地照片显示在
- 在PictureControl控件上绘图并保存
- c++学生信息管理系统源码(数据保存
- C++ 关闭和打开显示器
- C++ 打开注册表根项
- Opencv:基于MFC 对话框 摄像头采集视频
- C++ MP4v2获取rtsp流并保存为MP4文件
- vc++直接控制excel程序打开
评论
共有 条评论