请教 CreateDIBSection()函数的作用

子宜 2013-03-29 04:39:54
CreateDIBSection的函数申明如下:

HBITMAP CreateDIBSection(
HDC hdc, // handle to DC
CONST BITMAPINFO *pbmi, // bitmap data
UINT iUsage, // data type indicator
VOID **ppvBits, // bit values
HANDLE hSection, // handle to file mapping object
DWORD dwOffset // offset to bitmap bit values
);

对其中ppvBits的含义不太理解:
ppvBits :[out] Pointer to a variable that receives a pointer to the location of the DIB bit values.

这个函数执行过之后,ppvBits 里的数据到底是什么?个人理解是生成Bitmap文件中实际的位图数据,所以ppvBits所指空间的大小,是由头文件中biBitCount指定表示颜色时要用到的位数所确定的(1(黑白二色图), 4(16色图), 8(256色), 24(真彩色图)),这样理解对吗?

...全文
99 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2013-05-31
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
山伟 2013-03-29
  • 打赏
  • 举报
回复
引用 1 楼 shen_wei 的回复:
CreateDIBSection函数会根据位图结构信息(pbmi)分配内存空间,你不用为它分配内存,这块内存也不需要你释放,系统会自己释放的。 然后将位图中的图像数据读入这个内存地址,显示即可。 LPBYTE lpBits; HBITMAP hBmp=::CreateDIBSection(dcMem.m_hDC,lpBitmap,DIB_PAL_COLORS……
讲的好!
shen_wei 2013-03-29
  • 打赏
  • 举报
回复
CreateDIBSection函数会根据位图结构信息(pbmi)分配内存空间,你不用为它分配内存,这块内存也不需要你释放,系统会自己释放的。 然后将位图中的图像数据读入这个内存地址,显示即可。 LPBYTE lpBits; HBITMAP hBmp=::CreateDIBSection(dcMem.m_hDC,lpBitmap,DIB_PAL_COLORS, &lpBits,NUL L,0); //将图像数据填充到得到的内存地址中 file.ReadHuge(lpBits,dwBitlen); pDC->StretchBlt(0,0,bmp.bmWidth,bmp.bmHeight,&dcMem,0,0, bmp.bmWidth,bmp.bmHeight,SRCCOPY);

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧