WinCE 获取BMP图片数据

来源:互联网 发布:天津seo搜索排名优化 编辑:程序博客网 时间:2024/04/28 03:44

 

最近在一个WinCE项目中想使用BMP图片数据,在PC机上貌似非常方便就可以得到,但在WinCE里真是折腾了几番。

网络上也有一些类似的介绍;开始总想找更方便的方法。最后参考了一圈,还是只有CreateDIBSection一途。

HBITMAP hb;
BYTE * pBuf;
CDC dcMem;
CClientDC dc(this);
dcMem.CreateCompatibleDC( &dc ); 
hb = CreateDIBSection( dcMem.GetSafeHdc(),m_pBmpInfo,DIB_RGB_COLORS,(void **)&pBuf,NULL, 0 );
dcMem.SelectObject( hb );

CImage img;
img.LoadFromResource(AfxGetInstanceHandle(),IDB_BITMAP1); 
img.StretchBlt(dcMem,0,0,width,height,0,0,width,height);
img.Destroy();

memcpy( m_pBmpData,pBuf, width*height*2 ); 
delete[] pBuf;
dcMem.DeleteDC(); 

网络上有介绍使用2个HBITMAP, 2个MmDC来实现;我在这使用了一个,当然还是用了一个CImage。

说明:

1. m_pBmpIfo需要设置好;

2. 图像width和height根据实际图片大小进行设置;

3. m_pBmpData根据图片大小预先分配;

4. 本例中使用的16Bits的BMP图片,并添加到资源中,IDB_BITMAP1为资源ID号;

5. CE下,CImage貌似仅支持LoadFromResource。

 

原创粉丝点击