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

Bitmapdata.Scan0 return pointer to zero filled array

我有这样的代码

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检查了这个。 我尝试了不同的像素格式,但没有用。

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

将其更改为 ImageLockModeWrite | ImageLockModeRead