Gdiplus:: Битовый массив к Массиву байтов?

Вот моя попытка (ужасный GDI + и соединение GDI...)

// ...
BYTE               pixels[BMP_WIDTH * BMP_HEIGHT * BMP_BPP];
HBITMAP            hBitmap;
Gdiplus::Bitmap    cBitmap(BMP_WIDTH, BMP_HEIGHT, PixelFormat32bppRGB);
Gdiplus::Graphics  cGraphics(&cBitmap);
Gdiplus::Pen       cPen(Gdiplus::Color(255, 255, 0, 0));

cGraphics.DrawRectangle(&cPen, 0, 0, cBitmap.GetWidth() - 1, cBitmap.GetHeight() - 1);

// and here it get's real ugly, I'd like to change that...
cBitmap.GetHBITMAP(Gdiplus::Color(255, 255, 255), &hBitmap);
GetBitmapBits(hBitmap, sizeof(pixels), pixels);
// ...

Кто-то сказал мне использовать LockBits, но я действительно не понял как. Я попробовал его, но я перестал работать так, я не собираюсь отправлять ту попытку, также.

9
задан ThinkingStiff 30 June 2012 в 04:42
поделиться

2 ответа

Пытались ли вы предоставить байты при создании растрового изображения:

int width = BMP_WIDTH;
int height = BMP_HEIGHT;
int stride = 4 * width;
BYTE bytes[stride * height];

Gdiplus::Bitmap  cBitmap(width, height, stride, PixelFormat32bppRGB, bytes);
2
ответ дан 4 December 2019 в 12:15
поделиться

Вы можете использовать Bitmap::LockBits для получения доступа к необработанному массиву данных. Здесь вы можете прочитать о том, как использовать Bitmap::LockBits.

7
ответ дан 4 December 2019 в 12:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: