c++ - 如何绘制位图

标签 c++ winapi bitmap rendering

首先:我是 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);

选择位图到屏幕外 DC

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

关于c++ - 如何绘制位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7620450/

相关文章:

c# - 使用 COM for RPC 从 C++ 到 C#

c++ - 如何按条件打印位图?

c - 读取BMP文件并旋转

android - 如何在 Canvas 上绘制并转换为位图?

c++ - 为什么相同的类型不同?

c++ - log4cxx::Level::getError() 是否泄漏内存?

c++ - 为什么交换(这个技巧)会缩小 vector 的容量?

c++ - 模板实例化失败 : compiler choosing improper overload function

python - ReadDirectoryChangesW 阻止删除监视的目录

Android 如何在位图 xml 中设置不透明度