WinCE6.0学习笔记(图像读取并显示在MFC控件中)

我知道的方法有两种:利用IImage和利用BitBlt。平台mini2440
法一:IImage
加入头文件
#include <initguid.h>
#include <imaging.h>

#pragma comment (lib,"Ole32.lib")

注意顺序


/*我把下面代码放在一个按键响应函数里*/

CDC *pDC;
CRect rc;
GetDlgItem(IDC_EDIT1)->GetClientRect(rc);//IDC_EDIT1为显示图片的控件的ID
pDC = GetDlgItem(IDC_EDIT1)->GetDC();

IImage * m_pImage;
IImagingFactory * m_pImagingFactory;

HRESULT hr;

//COM初始化
if (FAILED(hr = CoInitializeEx(NULL, COINIT_MULTITHREADED)))
{
    goto END;
}
//创建COM实例
if(FAILED(hr = CoCreateInstance(CLSID_ImagingFactory,NULL,CLSCTX_INPROC_SERVER,IID_IImagingFactory,(void**) &m_pImagingFactory)))
{
    goto END;
}
//从文件中创建图片
if(FAILED(hr = m_pImagingFactory->CreateImageFromFile(_T("redhat.bmp"), &m_pImage)))//redhat.bmp是需要显示的图片
{
    goto END;
}
//绘制图片
if(FAILED(hr = m_pImage->Draw(pDC->m_hDC,&rc,NULL)))
{
    goto END;
}

END:
//释放资源
if(m_pImage != NULL)
{
    m_pImage->Release();
    m_pImage = NULL;
}

if(m_pImagingFactory != NULL)
{
    m_pImagingFactory->Release();
    m_pImagingFactory = NULL;
}

CoUninitialize();

法二:BitBlt

/*我把下面代码放在一个按键响应函数里*/

CDC *dc;
CDC memdc;
HBITMAP hBitmap;
HBITMAP hOldbmp;

hBitmap=SHLoadDIBitmap(_T("redhat.bmp"));//redhat.bmp是需要显示的图片
dc= GetDlgItem(IDC_EDIT1)->GetDC();//IDC_EDIT1为显示图片的控件的ID

if(hBitmap==NULL)
{
    RETAILMSG(1,(TEXT("打开错误!\r\n")));
}

memdc.CreateCompatibleDC(dc);
hOldbmp=(HBITMAP)memdc.SelectObject(hBitmap);
dc->BitBlt(0,0,200,200,&memdc,0,0,SRCCOPY);
RETAILMSG(1,(TEXT("bitblt done!\r\n")));

memdc.SelectObject(hOldbmp);
memdc.DeleteDC();




评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值