首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GetDIBits:位图修改,但崩溃了?

GetDIBits:位图修改,但崩溃了?
EN

Stack Overflow用户
提问于 2011-10-22 08:03:07
回答 2查看 479关注 0票数 0

GetDIBits:尝试修改位图,但不确定如何操作?我试过lpvBits,但它在“猪”区域的比较中崩溃了。我该怎么做呢?thx

代码语言:javascript
复制
LPVOID lpvBits=NULL;    // pointer to bitmap bits array 
BITMAPINFO bi; 

ZeroMemory(&bi.bmiHeader, sizeof(BITMAPINFOHEADER)); 
bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); 

if (!GetDIBits(dc, m_bmp, 0, 400, lpvBits, &bi, DIB_RGB_COLORS)) 
AfxMessageBox("1");


char *pig = (char*)lpvBits;

for (int m=0;m<100;m++)
{
    if (pig[m] > 100)
    {
        pig[m] = 250;
    }
}

SetDIBits( dc, m_bmp, 0, 400, (void *)pig, &bi, DIB_RGB_COLORS ); 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-23 02:09:44

http://msdn.microsoft.com/en-us/library/dd144879(v=vs.85).aspx

lpvBits out指向接收位图数据的缓冲区的指针。如果此参数为NULL,则函数将位图的尺寸和格式传递给lpbi参数所指向的BITMAPINFO结构。

此处提供了示例:http://msdn.microsoft.com/en-us/library/dd183402(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/ms969901.aspx

http://www.codeproject.com/KB/graphics/drawing2bitmap.aspx

http://www.cplusplus.com/forum/general/28469/

票数 1
EN

Stack Overflow用户

发布于 2011-10-23 00:31:50

仔细阅读GetDIBits的文档- lpvBits指针没有返回给您-您需要为要获取的位图数据分配足够的内存,并将其传递给GetDIBits以使用图像数据填充它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7856516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档