2011-10-01 87 views
0

首先:我對GDI有點新鮮感,所以如果我有任何誤解,請原諒(並請告訴我)。如何繪製位圖

我想要做的事: 我試圖讓我的WM_PAINT代碼漆爲位圖,而不是與調用BeginPaint屏幕()。我也想在屏幕上顯示位圖,同時在其上顯示其他數據(不保存到位圖)。

任何人都可以告訴我需要實現這個功能和數據類型的win32嗎? 謝謝

+0

http://msdn.microsoft.com/en-us/library/ms908165.aspx –

回答

1

首先,要畫一個窗口以外的地方,你需要一個新的DC。您可以使用HDC memDC = CreateCompatibleDC([your window hdc]);創建一個。

現在你需要一個位圖來繪製。使用HBITMAP memBitmap = CreateCompatibleBitmap ([your window hdc],[your window width],[your window height]);(假設你想要一個相同的大小,如果它不是那麼StretchBlt應該做的伎倆)來創建。

請注意,當您完成這些操作後,您需要清理DeleteObject (memBitmap);DeleteDC (memDC);

一旦創建,選擇位圖到你的屏幕外DC通過SelectObject (memDC, memBitmap);

現在做你的繪圖到memDC。完成後,使用函數將源代碼hdc用作memDC,將目標hdc用作窗口的DC。不要忘記刪除您創建的內容。

+0

由於我們必須使用CreateCompatibleBitmap()創建與設備上下文兼容的位圖...在該程序中,我還希望允許用戶從文件加載位圖。我將如何使該位圖兼容呢? – xcrypt