Создание нового растрового изображения с заданными размерами, заполненными заданным цветом - PullRequest
0 голосов
/ 06 ноября 2018

Я создаю программу с использованием Win32 API, и мне нужно создать новое растровое изображение, заполненное одним цветом и с заданными размерами.

Вот мой код:

m_hBitmap =( HBITMAP ) CreateCompatibleBitmap(hDC, iWidth, iHeight);

HDC hDCn = CreateCompatibleDC( hDC );
SelectObject( hDCn, m_hBitmap );

ExtFloodFill(hDCn, 0, 0, crColor, FLOODFILLSURFACE);

DeleteDC( hDCn );

Размеры растрового изображения совпадают, но растровое изображение всегда черное независимо от параметра crColor.

1 Ответ

0 голосов
/ 06 ноября 2018

Используйте FillRect() вместо ExtFloodFill().

Кроме того, вам необходимо отменить выбор растрового изображения перед удалением DC, в противном случае будет сохранено исходное растровое изображение, созданное и выбранное в DC с помощью CreateCompatibleDC().

Попробуйте это:

m_hBitmap = CreateCompatibleBitmap(hDC, iWidth, iHeight);

HDC hDCn = CreateCompatibleDC(hDC);
HBITMAP hOld = (HBITMAP) SelectObject(hDCn, m_hBitmap); // <-- SAVE OLD BITMAP! 

//ExtFloodFill(hDCn, 0, 0, crColor, FLOODFILLSURFACE);
RECT r;
r.left = r.top = 0;
r.right = iWidth;
r.bottom = iHeight;
HBRUSH hBrush = CreateSolidBrush(crColor);
FillRect(hDCn, &r, hBrush);
DeleteObject(hBrush);

SelectObject(hDCn, hOld); // <-- RESTORE OLD BITMAP
DeleteDC(hDCn);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...