我准备写一个处理所有图象文件的类库(不要很专业),包括.bmp,.jpge,.tif等等,主要是将其保存为满足OpenGL的贴图要求格式。我已实现了一点关于bmp的类。请大家给出意见,如何才能使整个类库有更好的结构。使其有更好的易用性,更好的继承性,更好的扩展性。总之,使类库更专业。由于无法列出所有的代码,所以只给出了头文件。
请愿意给出意见的,可就地给出,或请发Email到:[email protected],我可将代码通过邮件给你。但一定要多提你的宝贵意见喔!非常感谢!!!!!
下面是代码:
/*******************************************************/
/* bmp.h */
/*******************************************************/
#if !defined(_bitmap)
#define _bitmap#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000#include "File.h"
#include <TCHAR.h>class CBMP
{
public:
/***********************************************/
/* */
/* bmp的构造函数和与文件挂钩函数 */
/* */
/***********************************************/
//缺省CBMP构造函数(没有与文件挂钩)
CBMP() {FileName[0]=(TCHAR)'\0';}
//CBMP构造函数(与文件挂钩)(保留!!)
CBMP(TCHAR *filename) {FileName[0]=(TCHAR)'\0';_tcscpy(FileName,filename);}
//设置bmp的全文件名
void SetFileName(TCHAR *filename) {_tcscpy(FileName,filename);} /***********************************************/
/* */
/* bmp的初始化信息分配函数 */
/* */
/***********************************************/
//bmp的初始化函数(必调用)
void Init(void); /***********************************************/
/* */
/* bmp的操纵变换函数 */
/* */
/***********************************************/
//缩放图像
void Scale(BYTE scale_x,BYTE scale_y,BOOL flag=TRUE);
//变换为OpenGL的贴图类型(Clip方式)
void ConvertToMaterial_Clip(void);
//变换为OpenGL的贴图类型(模糊方式)
void ConverToMaterial_Blend(void);
/***********************************************/
/* */
/* 贴图的保存函数 */
/* */
/***********************************************/
//保存贴图
//choice为0,为RBG模式,choice为1,为RGBA模式
BOOL SaveMaterial(TCHAR *filename,BYTE choice=0);
/***********************************************/
/* */
/* bmp的信息获取函数 */
/* */
/***********************************************/
//获得以像素为单位的图像宽度
DWORD GetWidth() {return width;}
//获得以像素为单位的图像高度
DWORD GetHeight() {return height;}
//获得属性字符串
TCHAR * GetInfoString(void) {return InfoStr;} /***********************************************/
/* */
/* bmp的显示函数 */
/* */
/***********************************************/
//在GDI方式下显示bmp
void ShowDIB(HWND hwnd);
/***********************************************/
/* */
/* bmp的析构函数 */
/* */
/***********************************************/
virtual ~CBMP();private:
/***********************************************/
/* */
/* bmp的内部调用函数 */
/* */
/***********************************************/
//读文件,获得文件数据
BOOL ReadData(void);
//生成属性字符串
void GenerateInformationString(void);private:
//文件内容指针
BYTE *pFile; //指向文件头
BYTE *pbits; //指向像素位起始指针
//信息变量
TCHAR *version; //版本号
LONG width; //宽度
LONG height; //高度
WORD bcBitCount; //每像素位数
DWORD Compress; //压缩方式
DWORD BlueMask; //蓝色位掩码
DWORD GreenMask; //绿色位掩码
DWORD RedMask; //红色位掩码
DWORD FileSize; //文件大小
//其它
TCHAR FileName[MAX_PATH]; //文件名
TCHAR InfoStr[200]; //信息字符串
};#endif // !defined(_bitmap)
请愿意给出意见的,可就地给出,或请发Email到:[email protected],我可将代码通过邮件给你。但一定要多提你的宝贵意见喔!非常感谢!!!!!
下面是代码:
/*******************************************************/
/* bmp.h */
/*******************************************************/
#if !defined(_bitmap)
#define _bitmap#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000#include "File.h"
#include <TCHAR.h>class CBMP
{
public:
/***********************************************/
/* */
/* bmp的构造函数和与文件挂钩函数 */
/* */
/***********************************************/
//缺省CBMP构造函数(没有与文件挂钩)
CBMP() {FileName[0]=(TCHAR)'\0';}
//CBMP构造函数(与文件挂钩)(保留!!)
CBMP(TCHAR *filename) {FileName[0]=(TCHAR)'\0';_tcscpy(FileName,filename);}
//设置bmp的全文件名
void SetFileName(TCHAR *filename) {_tcscpy(FileName,filename);} /***********************************************/
/* */
/* bmp的初始化信息分配函数 */
/* */
/***********************************************/
//bmp的初始化函数(必调用)
void Init(void); /***********************************************/
/* */
/* bmp的操纵变换函数 */
/* */
/***********************************************/
//缩放图像
void Scale(BYTE scale_x,BYTE scale_y,BOOL flag=TRUE);
//变换为OpenGL的贴图类型(Clip方式)
void ConvertToMaterial_Clip(void);
//变换为OpenGL的贴图类型(模糊方式)
void ConverToMaterial_Blend(void);
/***********************************************/
/* */
/* 贴图的保存函数 */
/* */
/***********************************************/
//保存贴图
//choice为0,为RBG模式,choice为1,为RGBA模式
BOOL SaveMaterial(TCHAR *filename,BYTE choice=0);
/***********************************************/
/* */
/* bmp的信息获取函数 */
/* */
/***********************************************/
//获得以像素为单位的图像宽度
DWORD GetWidth() {return width;}
//获得以像素为单位的图像高度
DWORD GetHeight() {return height;}
//获得属性字符串
TCHAR * GetInfoString(void) {return InfoStr;} /***********************************************/
/* */
/* bmp的显示函数 */
/* */
/***********************************************/
//在GDI方式下显示bmp
void ShowDIB(HWND hwnd);
/***********************************************/
/* */
/* bmp的析构函数 */
/* */
/***********************************************/
virtual ~CBMP();private:
/***********************************************/
/* */
/* bmp的内部调用函数 */
/* */
/***********************************************/
//读文件,获得文件数据
BOOL ReadData(void);
//生成属性字符串
void GenerateInformationString(void);private:
//文件内容指针
BYTE *pFile; //指向文件头
BYTE *pbits; //指向像素位起始指针
//信息变量
TCHAR *version; //版本号
LONG width; //宽度
LONG height; //高度
WORD bcBitCount; //每像素位数
DWORD Compress; //压缩方式
DWORD BlueMask; //蓝色位掩码
DWORD GreenMask; //绿色位掩码
DWORD RedMask; //红色位掩码
DWORD FileSize; //文件大小
//其它
TCHAR FileName[MAX_PATH]; //文件名
TCHAR InfoStr[200]; //信息字符串
};#endif // !defined(_bitmap)
解决方案 »
- error C2659
- VS2008或VS2010中开发C++有可视化设计功能吗?如何实现?
- VC有什么开发框架,可以大幅提高开发速度的没?
- MFC对话框初始化
- vs大小写自动识别功能
- 对话框程序中有两线程 一个负责从USB读数据,一个负责显示读到的数据 但当焦点不在这个对话框上时 显示速度变得特慢 而且好像还丢帧
- 我在我的程序中运行另一个可执行文件(如a.exe),可不可以用程序关掉他?
- 请问如何把字符串转换为bmp或者png图片
- 如何将win32工程打包成dll再用其他程序调用它??
- 在win32的程序里怎样扑捉最后一次按键操作是按的什么?
- 怎样实现进度条指示文件夹以及文件的复制?
- 我想写一个软件路由,象 sygate 之类的软件,谁能提供思路?
参照一下.如果需要我们也可以交流一下,
我这边有支持jpg,TGA的代码