Bitmapdata.Scan0返回指向零填充数组的指针

时间:2016-03-24 15:57:51

标签: c++ gdi+

我有这样的代码

Bitmap bmp(i_texWidth, i_texHeight);
std::unique_ptr<Graphics> pBmpGr(Graphics::FromImage(&bmp));
SolidBrush brush(Color(255, 168, 128, 192));
assert(pBmpGr->FillRectangle(&brush, 0, 0, i_texWidth, i_texHeight) == Ok);
BitmapData bitmapData;
auto rect = Rect(0, 0, i_texWidth, i_texHeight);
bmp.LockBits(&rect, ImageLockModeWrite, PixelFormat24bppRGB, &bitmapData); 

在bitmapData.Scan0指向的数组被0填充后,尽管位图像素具有正确的值,我使用bmp.GetPixel进行了检查。 我尝试了不同的像素格式,但没有用。

1 个答案:

答案 0 :(得分:0)

ImageLockModeWrite不需要将像素数据复制到数组中。相反,只需要提供一个可以填充的数组,然后将其写入图像。

将其更改为ImageLockModeWrite | ImageLockModeRead