SelectObject(dc, hBMP) 的作用是什么?

发布于 2024-10-12 04:57:09 字数 782 浏览 6 评论 0原文

我想我确实明白如果我在“设备连接”中选择“一个对象”,并且该对象是画笔字体笔< /em>:这些对象的特征因此用于在设备上下文上进行绘图。

但是,我不明白在设备上下文中选择位图后会发生什么,更不用说为什么有必要这样做了。

我有一个程序,有些人做了

HDC dc = ::GetDC(hWnd);

ffBitmap   = ::CreateCompatibleBitmap(dc, windowWidth, windowHeight);
ffMemoryDc = ::CreateCompatibleDC(dc);

hOldBitmap          = (HBITMAP) ::SelectObject(ffMemoryDc, ffBitmap);

,然后绘制到 ffMemoryDc 然后 *BitBlt*s 将 ffMemoyDc 放入 窗口的真实设备上下文。

BitBlt ( dc, 
         0, 0, windowWidth, windowHeight,
         ffMemoryDc,
         0, 0,
         SRCCOPY
       );

变量ffBitmap在整个程序中没有被其他地方引用,但是,如果我不选择SelectObject(ffBitmap),则不会绘制任何内容,因此这是必要的。

如果有人能阐明这里发生的事情,我将不胜感激。

I guess I do understand what happens if I select "an object" into a "device contect", and if this object is a brush, font, pen: The charactersicts of these objects are hence forth used for the drawing onto the device context.

However, I don't understand what happens after I select a bitmap into the device context, much less, why it is necessary to do so.

I have a program that somehwere does

HDC dc = ::GetDC(hWnd);

ffBitmap   = ::CreateCompatibleBitmap(dc, windowWidth, windowHeight);
ffMemoryDc = ::CreateCompatibleDC(dc);

hOldBitmap          = (HBITMAP) ::SelectObject(ffMemoryDc, ffBitmap);

and later draws unto the ffMemoryDc and then *BitBlt*s the ffMemoyDc into the
real device context of a window.

BitBlt ( dc, 
         0, 0, windowWidth, windowHeight,
         ffMemoryDc,
         0, 0,
         SRCCOPY
       );

The variable ffBitmap is referenced nowhere else in the entire program, yet, if I don't SelectObject(ffBitmap), nothing is drawn, so it is necessary.

I'd appreciate if someone could shed some light what happens here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

莫多说 2024-10-19 04:57:09

这就是它的工作原理。您在 DC 中选择的位图是“绘制”的位图。引用 MSDN

在应用程序可以使用内存设备上下文进行绘图操作之前,它必须将正确宽度和高度的位图选择到设备上下文中。

That's how it work. The bitmap you select in the DC is the bitmap that is "painted on". Quoting MSDN:

Before an application can use a memory device context for drawing operations, it must select a bitmap of the correct width and height into the device context.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文