wince的png贴图

#include <initguid.h>
#include <imaging.h>
#pragma comment (lib,"Ole32.lib")
         HRESULT hr ; //返回结果	
	IImagingFactory * pImagingFactory =NULL; //Image工厂接口对象
	IImagingFactory * pImagingFactory2 =NULL; //Image工厂接口对象
	IImagingFactory * pImagingFactory3 =NULL; //Image工厂接口对象
	IImage * pImage = NULL; //Image接口对象;
	IImage * pImage2 = NULL; //Image接口对象;
	IImage * pImage3 = NULL; //Image接口对象;
	
	LPCTSTR szFileName = L"\\000.png"; //图象文件notice.png//Windows Embedded.jpg//test.jpg
	LPCTSTR szFileName2 = L"\\disconn.png"; //图象文件notice.png//Windows Embedded.jpg//test.jpg
	LPCTSTR szFileName3 = L"\\conn.png"; //图象文件notice.png//Windows Embedded.jpg//test.jpg
		
	//初始化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;
	} 

	///
	//得到Image工厂接口对象
	hr = CoCreateInstance(CLSID_ImagingFactory, 
	NULL, 
	CLSCTX_INPROC_SERVER, 
	IID_IImagingFactory, 
	(void**) &pImagingFactory2);

	if (FAILED(hr))
	{
	TRACE(L"IMAGE FACTORY CREATED ERROR");
	goto finish;
	}

	//加载图象文件到IImage接口对象中
	hr = pImagingFactory->CreateImageFromFile(szFileName2,&pImage2);

	if (FAILED(hr))
	{
	TRACE(L"IMAGE LOAD ERROR");
	goto finish;
	} 

	///
	//得到Image工厂接口对象
	hr = CoCreateInstance(CLSID_ImagingFactory, 
	NULL, 
	CLSCTX_INPROC_SERVER, 
	IID_IImagingFactory, 
	(void**) &pImagingFactory3);

	if (FAILED(hr))
	{
	TRACE(L"IMAGE FACTORY CREATED ERROR");
	goto finish;
	}

	//加载图象文件到IImage接口对象中
	hr = pImagingFactory->CreateImageFromFile(szFileName3,&pImage3);

	if (FAILED(hr))
	{
	TRACE(L"IMAGE LOAD ERROR");
	goto finish;
	} 
	
	
	ImageInfo p,p2;
	pImage->GetImageInfo(&p);
	pImage2->GetImageInfo(&p2);
	int i=p.Width;
	int j=p.Height;

	int g=p2.Width;
	int h=p2.Height;

	//开始绘制图象
	//得到设备环境
	{
			HDC hdc=::GetDC(m_hWnd);
			HBITMAP hBitmap = ::CreateCompatibleBitmap(hdc,i,j);
			HDC hdcMem = ::CreateCompatibleDC(hdc);
			HBITMAP Old_bitmap=(HBITMAP)::SelectObject(hdcMem,hBitmap);
			CRect rect,rect2(20,20,84,84);
			GetClientRect(&rect);
			pImage->Draw(hdcMem,&rect,NULL);
			
			/*HBITMAP hBitmap2 = ::CreateCompatibleBitmap(hdc,g,h);
			HDC hdcMem2 = ::CreateCompatibleDC(hdc);
			HBITMAP Old_bitmap2=(HBITMAP)::SelectObject(hdcMem2,hBitmap2);*/
			if(!IsConn)
		{
			pImage2->Draw(hdcMem,&rect2,NULL);
			IsConn=true;
		}
		else
		{
			pImage3->Draw(hdcMem,&rect2,NULL);
			IsConn=false;
		}
			//pImage2->Draw(hdcMem,&rect2,NULL);
			
			
		::SetBkMode(hdcMem,TRANSPARENT);
		CString str;
		str.Format(_T("%d"),ii);		
		::DrawText(hdcMem,str,str.GetLength(),&rect,DT_LEFT);
		
		BitBlt(hdc,0,0,rect.Width(),rect.Height(),hdcMem,0,0,SRCCOPY);
		
		


		::SelectObject(hdcMem,Old_bitmap);
		//::SelectObject(hdcMem2,Old_bitmap2);
		//::DeleteObject(hBitmap2);
		::DeleteObject(hBitmap);
		//::DeleteDC(hdcMem2);
		::DeleteDC(hdcMem);
		::ReleaseDC(m_hWnd,hdc);
		
	}
	

	
	//goto  finish;

finish:
	//释放IImage接口对象
	if (pImage)
	pImage->Release();
	
	//释放IImagingFactory接口对象
	if (pImagingFactory)
	pImagingFactory->Release();

		if (pImage2)
	pImage2->Release();
	
	//释放IImagingFactory接口对象
	if (pImagingFactory2)
	pImagingFactory2->Release();

	if (pImage3)
	pImage3->Release();
	
	//释放IImagingFactory接口对象
	if (pImagingFactory3)
	pImagingFactory3->Release();
	

	//释放程序占用的COM资源
	CoUninitialize();

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值