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
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值