[WM C++]从资源文件中加载显示png/jpg图片
来源:农民伯伯 责任编辑:栏目编辑 发表时间:2013-07-01 10:30 点击:次
前言
在Windows Mobile项目中大量的贴图确实能贴出非常精美的画面,但是默认支持的bmp格式的背景图片实在太大,800x400的图片大小居然居然达到1M,几个模块背景切换下来,再加上其他零散的小图片整个exe将近10M!看来必须让项目得支持png/jpg格式压缩过的图片。其实之前已经实现从文件加载png/jpg图片的办法,能实现但不理想,图片需要单独发布,且担心图片发布后被用户不小心删除。
文章
1. http://www.arstdesign.com/articles/picloader.html
2. http://www.cppblog.com/zhangyq/archive/2008/04/11/46816.aspx
3. IImage的图片显示
正文
一、 实现代码
void DrawImage(HDC hdc,RECT& rc,UINT nIDResource,CString lpType)
{
HINSTANCE hInst = AfxGetResourceHandle();
HRSRC hRsrc = ::FindResource(hInst, MAKEINTRESOURCE(nIDResource), lpType);
if (!hRsrc)
return;
//资源大小
DWORD len = SizeofResource(hInst, hRsrc);
//转换图片资源为字节数组
BYTE* lpRsrc = (BYTE*)LoadResource(hInst, hRsrc);
if (!lpRsrc)
return;
IImagingFactory *pImgFactory = NULL;
IImage *pImage = NULL;
CoInitializeEx(NULL, COINIT_MULTITHREADED);
if (SUCCEEDED(CoCreateInstance (CLSID_ImagingFactory,
NULL,
{
HINSTANCE hInst = AfxGetResourceHandle();
HRSRC hRsrc = ::FindResource(hInst, MAKEINTRESOURCE(nIDResource), lpType);
if (!hRsrc)
return;
//资源大小
DWORD len = SizeofResource(hInst, hRsrc);
//转换图片资源为字节数组
BYTE* lpRsrc = (BYTE*)LoadResource(hInst, hRsrc);
if (!lpRsrc)
return;
IImagingFactory *pImgFactory = NULL;
IImage *pImage = NULL;
CoInitializeEx(NULL, COINIT_MULTITHREADED);
if (SUCCEEDED(CoCreateInstance (CLSID_ImagingFactory,
NULL,
相关新闻>>
最新推荐更多>>>
热门新闻进入移动开发频道>>
- 发表评论
-
- 最新评论 更多>>