我猜我理解了如果我在“设备上下文”中选择“对象”,并且如果这个对象是一个画刷,字体,笔,那么这些对象的特性将用于在设备上下文上进行绘图。
然而,我不明白在将位图选择到设备上下文之后会发生什么,更不用说为什么需要这样做。
我有一个程序,在某个地方执行了以下操作:
HDC dc = ::GetDC(hWnd);
ffBitmap = ::CreateCompatibleBitmap(dc, windowWidth, windowHeight);
ffMemoryDc = ::CreateCompatibleDC(dc);
hOldBitmap = (HBITMAP) ::SelectObject(ffMemoryDc, ffBitmap);
然后将绘制内容放入 ffMemoryDc ,并将 ffMemoryDc *BitBlt* 到窗口的真实 设备上下文中。
BitBlt ( dc,
0, 0, windowWidth, windowHeight,
ffMemoryDc,
0, 0,
SRCCOPY
);
整个程序中没有其他地方引用变量ffBitmap, 但是如果我不选择SelectObject(ffBitmap)
,就什么都不会绘制,所以它是必要的。
如果有人能够解释一下这里发生了什么,那我将不胜感激。