【发布时间】:2011-06-10 04:32:18
【问题描述】:
我想我确实明白如果我在“设备连接”中选择“一个对象”会发生什么,并且如果这个对象是 brush、font、pen:这些对象的特征因此被用于在设备上下文上绘图。
但是,我不明白在将位图选择到设备上下文后会发生什么,更不用说为什么需要这样做了。
我有一个程序可以做
HDC dc = ::GetDC(hWnd);
ffBitmap = ::CreateCompatibleBitmap(dc, windowWidth, windowHeight);
ffMemoryDc = ::CreateCompatibleDC(dc);
hOldBitmap = (HBITMAP) ::SelectObject(ffMemoryDc, ffBitmap);
然后绘制到 ffMemoryDc 然后 *BitBlt*s 将 ffMemoryDc 放入 真实的窗口的设备上下文。
BitBlt ( dc,
0, 0, windowWidth, windowHeight,
ffMemoryDc,
0, 0,
SRCCOPY
);
变量ffBitmap在整个程序中没有被引用,但是,如果我不选择对象(ffBitmap),什么都不会被绘制,所以这是必要的。
如果有人能阐明这里发生的事情,我将不胜感激。
【问题讨论】:
-
把它想象成一个橡皮图章。由 SelectObject 创建,与 BitBlt 一起应用。额外的间接性很重要。