CreateCompatibleBitmap与SelectObject

时间:2012-08-23 10:12:48

标签: mfc scale cdc cbitmap

我想知道,如果我想创建不同的位图,

我一次又一次地使用CreateCompatibleBitmap函数,将它与同一个内存CDC相关联。

CreateBitmapSelectObject一次又一次的意思相同?

我问这个问题是因为我想对另一个CDC的新创建的位图做一些事情。

2 个答案:

答案 0 :(得分:1)

在没有看到特定代码的情况下,很难知道确切的问题,但CreateCompatibleBitmap通常用于双缓冲情况以避免闪烁。您不是直接绘制到设备上下文(DC),而是首先绘制到屏幕外或内存DC,它基本上是绘制到位图。然后使用BitBlt将位图直接复制到屏幕DC,因此看起来所有绘图都在同一时间发生。

通常的步骤是这样(并且可能会在每个WM_PAINT上发生):

  1. 使用屏幕DC使用CreateCompatibleBitmap创建与其“兼容”的位图。
  2. 创建内存DC
  3. 将位图选择到内存DC(这是您要绘制的内容)
  4. 当绘图完成BitBlt时,内存DC的位图会显示在屏幕DC上。
  5. 此处提供了更多信息:Guide to Win32 Memory DC (Code Project)

答案 1 :(得分:0)

是的,CreateCompatibleBitmap()每次在循环中调用它时都会创建一个新的位图,一个新的内存分配,一个新的处理程序;