使用给定尺寸填充给定颜色的新位图

时间:2018-11-06 16:23:13

标签: c++ winapi bitmap

我正在使用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 :(得分:2)

使用FillRect()代替ExtFloodFill()

此外,您需要在删除DC之前取消选择位图,否则CreateCompatibleDC()创建并选择到DC中的原始位图将被泄漏。

尝试一下:

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