首先:我对GDI有点新意,所以如果我有任何误解,请原谅(并告诉我)。
我正在尝试做什么: 我试图让我的WM_PAINT代码绘制到位图而不是使用BeginPaint()的屏幕。我还想在屏幕上显示位图,同时还在其上显示其他数据(不会保存到位图)。
有人能告诉我实现这一目标所需的win32函数和数据类型吗? 感谢
答案 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);
现在将所有绘图都放到memDC
。完成后,使用带有源hdc的BitBlt()
函数作为memDC,将目标hdc用作窗口的DC。不要忘记删除您创建的内容。