Wind32 GDI在内存中绘制彩色位图
1创建兼容的内存DC
hPicture为创建的静态文本框控件句柄
复制代码
LRESULT OnPaint(HWND hWnd)
{
PAINTSTRUCT ps;
HDC hdc = ::BeginPaint(hWnd, &ps);
//1.创建静态文本框控件DC
HDC hPictureDc = GetDC(hPicture);
//2.创建和窗口DC兼容的内存DC,
HDC hMenDc = CreateCompatibleDC(hdc);
//3.创建内存位图
//这要注意,如果创建和内存DC兼容的位图就只有黑白色,不会有彩色
//所以要创建实际对象DC.窗口DC或静态控件DC兼容的内存位图
HGDIOBJ hBitmap = CreateCompatibleBitmap(hdc, 500, 400);
//把位图选入内存DC中
HGDIOBJ hOldBitmap = SelectObject(hMenDc, hBitmap);
//给内存填充一个白色的背景色,如不填充背景色为黑色
RECT rect = { 0,0,500,400 };
FillRect(hMenDc, &rect,(HBRUSH) GetStockObject(WHITE_BRUSH));
//绘制你要绘制的位图
DrawBitmap(hMenDc, 500, 400);
//把内存DC中的位图复制到静态控件上显示出来
//我这是缩放复制,原样复制可以用BiBlt函数
StretchBlt(hPictureDc, 0, 0, 300, 200, hMenDc, 0, 0, 500, 400, SRCCOPY);
//释放GDI对象资源
SelectObject(hMenDc, hOldBitmap);
DeleteObject(hBitmap);
DeleteDC(hMenDc);
DeleteDC(hPictureDc);
EndPaint(hWnd, &ps);
return LRESULT();
}
复制代码
这是不填充背景色的效果
这是填充背景色为白色的效果
这是创建内存位图时选的内存DC兼容的效果
签名:GreenLeaf1976