Chinaunix首页 | 论坛 | 博客
  • 博客访问: 672380
  • 博文数量: 134
  • 博客积分: 3158
  • 博客等级: 中校
  • 技术积分: 1617
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-30 22:36
文章分类

全部博文(134)

文章存档

2012年(2)

2011年(28)

2010年(68)

2009年(35)

2008年(1)

我的朋友

分类: 嵌入式

2010-08-06 10:32:11

windows mobile 显示多种压缩格式图片,背景也是透明的方式。
本来这些我应该早早就发现了。但是却没有。很遗憾。
这个方法的使用比较简单。
文件: ImageTest.rar
大小: 1759KB
下载: 下载
可以如下使用
 
 
文件头引用  :
#include "initguid.h"
#include
然后呢,就如下代码就可以进行显示了:
 
 // TODO: 在此添加控件通知处理程序代码
 HRESULT hr ; //返回结果
 IImagingFactory * pImagingFactory =NULL; //Image工厂接口对象
 IImage * pImage = NULL; //Image接口对象
 LPCTSTR szFileName = L"\\展开动画-中.gif"; //图象文件
 //初始化COM环境
 if (FAILED(hr = CoInitializeEx(NULL, COINIT_MULTITHREADED)))
 {
  TRACE(L"COINIT_MULTITHREADED ERROR");
  return;
 }
 //得到Image工厂接口对象
 hr = CoCreateInstance(CLSID_ImagingFactory,
  NULL,
  CLSCTX_INPROC_SERVER,
  IID_IImagingFactory,
  (void**) &pImagingFactory);
 if (FAILED(hr))
 {
  TRACE(L"IMAGE FACTORY CREATED ERROR");
  goto finish;
 }
 //加载图象文件到IImage接口对象中
 hr = pImagingFactory->CreateImageFromFile(szFileName,&pImage);
 //
 if (FAILED(hr))
 {
  TRACE(L"IMAGE LOAD ERROR");
  goto finish;
 } 
 //开始绘制图象
 //得到设备环境
 CDC *pDC =GetDC();
 //定义绘制尺寸
 RECT rect;
 GetClientRect(&rect);
 rect.left =65;
 rect.top =65;
 rect.right=165;
 rect.bottom = 165;
 //绘制图片
 pImage->Draw(pDC->m_hDC, &rect, NULL);
 //释放设备环境
 ReleaseDC(pDC);
finish:
 //释放IImage接口对象
 if (pImage)
  pImage->Release();
 //释放IImagingFactory接口对象
 if (pImagingFactory)
  pImagingFactory->Release();
 //释放程序占用的COM资源
 CoUninitialize();
 
 
我将些内容改为函数,调用比较成功,但是当我想改为类的时候却失败了。
下面是我改的函数:
void CImagingDemoDlg::MyDrawImage( LPCTSTR szFileName,CDC *pDC,RECT rect)
{
 HRESULT hr ; //返回结果
 IImagingFactory * pImagingFactory =NULL; //Image工厂接口对象
 IImage * pImage = NULL; //Image接口对象
 
 //初始化COM环境
 if (FAILED(hr = CoInitializeEx(NULL, COINIT_MULTITHREADED)))
 {
  TRACE(L"COINIT_MULTITHREADED ERROR");
  return;
 }
 //得到Image工厂接口对象
 hr = CoCreateInstance(CLSID_ImagingFactory,
  NULL,
  CLSCTX_INPROC_SERVER,
  IID_IImagingFactory,
  (void**) &pImagingFactory);
 if (FAILED(hr))
 {
  TRACE(L"IMAGE FACTORY CREATED ERROR");
  goto finish;
 }
 //加载图象文件到IImage接口对象中
 hr = pImagingFactory->CreateImageFromFile(szFileName,&pImage);
 //
 if (FAILED(hr))
 {
  TRACE(L"IMAGE LOAD ERROR");
  goto finish;
 } 
 //绘制图片
 pImage->Draw(pDC->m_hDC, &rect, NULL);
 //释放设备环境
 ReleaseDC(pDC);
finish:
 //释放IImage接口对象
 if (pImage)
  pImage->Release();
 //释放IImagingFactory接口对象
 if (pImagingFactory)
  pImagingFactory->Release();
 //释放程序占用的COM资源
 CoUninitialize();
}
 
我在这个函数里这么调用:
 //开始绘制图象
 //得到设备环境
 CDC *pDC =GetDC();  //获得是显示器的设备上下文,不是桌面的.
 //定义绘制尺寸
 RECT rect;
 GetClientRect(&rect);
 MyDrawImage(L"\\展开动画-中.gif",pDC,rect);
 
 
 
后记:
终于找到一个网友写的类,是用的这些内容。很高心拿来了,做了个工程,
原文章:PPC中显示bmp, png, jpg, 图片
 
下面传上原工程代码。
文件: ImageTest.rar
大小: 1728KB
下载: 下载
 
 
阅读(1231) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~