2016-03-24 17 views
0

Ich habe solchen CodeBitmapdata.Scan0 Zeiger auf Null zurück Array gefüllt

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); 

Danach Array von bitmapData.Scan0 wies von 0 gefüllt ist, trotz Bitmap Pixel korrekte Werte haben, Ich habe dies mit bmp.GetPixel . Ich habe verschiedene Pixelformate ausprobiert, es hilft nicht.

Antwort

0

ImageLockModeWrite ist nicht erforderlich, um die Pixeldaten in das Array zu kopieren. Stattdessen ist es lediglich erforderlich, ein Array zur Verfügung zu stellen, das Sie ausfüllen können, das dann in das Bild geschrieben wird.

Ändern Sie das zu ImageLockModeWrite | ImageLockModeRead