手――高手@_@,请忽略。
1、包含 GDI+ 的头文件和库
我们需要包含 GDI+ 头文件,包含 lib,使用 Gdiplus 的别名。为了省事,我放到了
stdafx.h 里。
//-------------------------------------------------------------------------
//请在主框架里GdiplusStartup / GdiplusShutdown
#include <gdiplus.h> //GDI+ 声明,可以GDI/GDI+ 混合使用
#pragma comment(lib, "gdiplus.lib")
using namespace Gdiplus;
//-------------------------------------------------------------------------
你也可以在 工程属性->链接器->输入->附加依赖项 里包含 gdiplus.lib 文件,也可以不使用
别名,那么定义 GDI+ 对象的时候,就要带上域名,如 Gdiplus::Bitmap, 这里建议还是
using namespace.
2、初始化和释放 GDI+ 调用
请参考 CBmp2MApp 里的相关代码。
首先定义一个 ULONG_PTR 的成员变量 m_gdiplusToken ,这是一个 DWORD 数据
类型,该成员变量用来保存 GDI+ 被初始化后在应用程序中的 GDI+ 标识,以便能在应用
程序退出后,引用该标识来调用 Gdiplus:: GdiplusShutdown 来关闭 GDI+。
//--------------------------------------------------
ULONG_PTR m_gdiplusToken; //GDI+
然后在 BOOL CBmp2MApp::InitInstance() 里开始初始化 GDI+ 环境。
//--------------------------------------------------
//初始化GID+
GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup( &m_gdiplusToken,&gdiplusStartupInput,NULL );
//--------------------------------------------------
最后,在 int CBmp2MApp::ExitInstance()里,我们来释放 GDI+ 的调用。注意:
在向导生成的缺省项目中,这个函数是没有的,我们需要重载它。在类视图里选择
CBmp2MApp,然后在属性里点重写,就可以看到。(是不是太罗嗦了^_^)
int CBmp2MApp::ExitInstance()
{
//释放GDI+ 调用
GdiplusShutdown( m_gdiplusToken );
return CWinApp::ExitInstance();
}
3、图片的分解
分解一张图为多张,这是程序的缺省模式。如源码中的注释,我只考虑了横向分解,
没有考虑纵向的情况,也没有考虑智能的获取图片的尺寸问题,缺省就是 16*16,如果你
的图片是 32*32 或其他的模式,请手动更改。但你点击选择文件,成功选择一个合适的图
片文件之后,界面应该是下图所示的样子。如果不想改变拆分图片的存储路径,你可以直
接点确定了,不出意外的话,会打开一个文件夹界面,然后里边有 N 张存储成功可供使用