创建一个新的位图,该位图具有用给定颜色填充的给定尺寸



我正在使用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参数如何,位图始终为黑色。

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

最新更新