2012-08-23 81 views
0

我想知道,如果我想創建不同的位圖,CreateCompatibleBitmap Vs的選擇對象

我一次又一次地使用CreateCompatibleBitmap功能,它關聯到相同的內存CDC。

它是一樣的意思,我CreateBitmapSelectObject一遍又一遍?

我問這個問題,因爲我想對另一個CDC新創建的位圖做些什麼。

+0

你的實際問題是什麼?你只是擔心資源使用,或者你無法做到你想要的? – snowdude

+0

我首先看到一些帶有CreateCompatibleBitmap的代碼,然後再次使用SelectObject。如果它是相同的,那麼我不想再做同樣的事情。 –

回答

1

沒有看到具體的代碼,很難知道確切的問題,但CreateCompatibleBitmap通常用於雙緩衝的情況以避免閃爍。您不是直接繪製設備上下文(DC),而是先將其繪製到基本上繪製爲位圖的離屏或內存DC上。然後使用BitBlt將位圖直接複製到屏幕DC,因此看起來像所有繪圖都是同時發生的。

通常的步驟是這樣的(也可能會發生在每個WM_PAINT):

  1. 使用屏幕DC創建位圖,這是「兼容」有了它,使用CreateCompatibleBitmap
  2. 創建一個內存DC
  3. 選擇位圖到內存DC(這是什麼,你會畫到)
  4. 當繪製完成BitBlt內存DC的位圖到屏幕DC。

的更多信息可在這裏:Guide to Win32 Memory DC (Code Project)

0

是,CreateCompatibleBitmap()創建一個新的位圖,一個新的內存分配,一個新的處理程序在每次調用在一個循環時間;