首先:我是 GDI 的新手,所以如果我有任何误解,请原谅(并告诉我)。
我想做什么: 我试图让我的 WM_PAINT 代码绘制到位图而不是使用 BeginPaint() 到屏幕。我还想在屏幕上显示位图,同时还在其上显示其他数据(不会保存到位图中)。
谁能告诉我实现此目标所需的 win32 函数和数据类型? 谢谢
最佳答案
首先,要在 window 以外的地方绘画,您需要一个新的 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
。完成后,使用 BitBlt()
函数,将源 hdc 作为 memDC,将目标 hdc 作为窗口的 DC。不要忘记删除您创建的内容。
关于c++ - 如何绘制位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7620450/