Создание растрового изображения в Win32 с использованием Gdiplus - PullRequest
0 голосов
/ 13 марта 2020

Я пытаюсь создать растровое изображение, используя Win32 и Gdiplus. Я не хочу загружать файл, я просто хочу создать свое собственное изображение с помощью Setpixel. Я использовал этот конструктор:

void Bitmap(INT width, INT height, INT stride, PixelFormat format, BYTE *scan0);

Но когда я пытаюсь использовать Setpixel на своем растровом изображении, он ничего не делает, даже GetHeight возвращает 0.

m_pixelMap = new BYTE[m_renderSpaceWidth*m_renderSpaceHeight * 3];
Gdiplus::Bitmap img(m_renderSpaceWidth, m_renderSpaceHeight, 24 * m_renderSpaceWidth, PixelFormat24bppRGB, m_pixelMap);
std::cout << "H: " << img.GetHeight() << std::endl;

Что я делаю не так?

1 Ответ

1 голос
/ 18 марта 2020

Так что я не знал, что мне нужно сначала инициализировать Gdiplus, так что это то, чего мне не хватало. И я немного изменил создание растрового изображения. Теперь все работает.

m_stride =  ALIGN_CLUSPROP(3 * m_renderSpaceWidth);
m_padding = m_stride - (m_renderSpaceWidth * 3);
m_horizontalScanLine = (m_renderSpaceWidth * 3) + m_padding;

m_pixelMap = new BYTE[m_stride * m_renderSpaceHeight];
m_bitmap = new Gdiplus::Bitmap(m_renderSpaceWidth, m_renderSpaceHeight, m_stride, PixelFormat24bppRGB, m_pixelMap);
...