如何绘制到位图

时间:2011-10-01 13:15:47

标签: c++ winapi bitmap rendering

首先:我对GDI有点新意,所以如果我有任何误解,请原谅(并告诉我)。

我正在尝试做什么: 我试图让我的WM_PAINT代码绘制到位图而不是使用BeginPaint()的屏幕。我还想在屏幕上显示位图,同时还在其上显示其他数据(不会保存到位图)。

有人能告诉我实现这一目标所需的win32函数和数据类型吗? 感谢

1 个答案:

答案 0 :(得分:1)

首先,要在窗户以外的地方进行绘画,你需要一个新的DC。您可以使用HDC memDC = CreateCompatibleDC([your window hdc]);创建一个。

现在你需要一个位图来绘制。使用HBITMAP memBitmap = CreateCompatibleBitmap ([your window hdc],[your window width],[your window height]);(假设你想要一个相同的大小,如果不是那么StretchBlt应该做的话)来创建它。

请注意,使用完毕后,您需要DeleteObject (memBitmap);DeleteDC (memDC);进行清理。

创建后,通过SelectObject (memDC, memBitmap);

将位图选择到您的屏幕外DC

现在将所有绘图都放到memDC。完成后,使用带有源hdc的BitBlt()函数作为memDC,将目标hdc用作窗口的DC。不要忘记删除您创建的内容。