GetDIBits:尝试修改位图,但不确定如何操作?我试过lpvBits,但它在“猪”区域的比较中崩溃了。我该怎么做呢?thx
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 ); 发布于 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/
发布于 2011-10-23 00:31:50
仔细阅读GetDIBits的文档- lpvBits指针没有返回给您-您需要为要获取的位图数据分配足够的内存,并将其传递给GetDIBits以使用图像数据填充它。
https://stackoverflow.com/questions/7856516
复制相似问题