您的位置:首页 > 其它

IImagingFactory ,各种格式的图片解码

2010-06-21 17:14 183 查看
看完网上兄弟们的文章,自己试验了一下。

1 #include <initguid.h>
2 #include <imgguids.h>
3 #include <imaging.h>
4 MyWnd::MyDraw()
5 {
6
7 IImagingFactory* pImgFac;
8 IImage* m_pImage;
9 ImageInfo m_pImageInfo;
10 if(FAILED(CoCreateInstance( CLSID_ImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_IImagingFactory, (void**)&pImgFac)))
11 return TRUE;
12
13 HRSRC hRes=FindResource(m_hWnd,
14 MAKEINTRESOURCE(IDR_XXX),
15 RT_RCDATA); //IDR_XXX资源号
16
17 if (hRes==NULL)
18 return FALSE;
19 HGLOBAL hGlobal=LoadResource(m_hWnd,hRes);
20 DWORD size=SizeofResource(m_hWnd,hRes);
21 LPVOID pData=LockResource(hGlobal);
22
23 if (pImgFac == NULL || pData == NULL || size == 0)
24 return NULL;
25 if (SUCCEEDED(pImgFac->CreateImageFromBuffer(pData, size, BufferDisposalFlagGlobalFree , &m_pImage)))
26 {
27 m_pImage->GetImageInfo(&m_pImageInfo);
28 HDC hdc = ::GetDC(NULL);
29 memHdc = ::CreateCompatibleDC(hdc);
30 hImg = CreateCompatibleBitmap(hdc,m_pImageInfo.Width,m_pImageInfo.Height);
31 SelectObject(memHdc,hImg);
32
33 rsWeight=m_pImageInfo.Width;
34 rsHight=m_pImageInfo.Height;
35 RECT rect = { 0, 0, m_pImageInfo.Width,m_pImageInfo.Height};
36 m_pImage->Draw(memHdc,&rect,NULL);
37 }
38 else
39 {
40 return NULL;
41 }
42 return TRUE;

在direct draw里面,还是有很多很有意思的功能的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐