我想我确实理解如果将“对象”选择为“设备接触对象”,并且如果该对象是画笔,字体,钢笔,则会发生什么情况:因此,这些对象的特征将用于在设备上下文上进行绘制。

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

我有一个程序

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),则不会绘制任何内容,因此是必需的。

我希望有人能阐明一下这里发生的情况。

最佳答案

这就是它的工作方式。您在DC中选择的位图是“绘制在”上的位图。引用MSDN:

10-08 11:17