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
我有这样的代码
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