我想我确实理解如果我将“对象”选择到“设备竞争”中会发生什么,并且如果此对象是画笔,字体, pen :因此,这些对象的特征用于绘制到设备上下文中。
但是,我不明白在设备上下文中选择位图后会发生什么,更不用说为什么有必要这样做了。
我有一个程序,但有些人
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),则不会绘制任何内容,因此 是必需的。
如果有人可以了解这里发生的事情,我会很感激。
答案 0 :(得分:3)
这就是它的工作原理。您在DC中选择的位图是“绘制在上面”的位图。引用MSDN:
在应用程序可以使用内存设备上下文进行绘图操作之前,它必须在设备上下文中选择正确宽度和高度的位图。