2010-05-04 81 views
0
HDC hdcMem = CreateCompatibleDC(hdc); 
HBITMAP hbmOld = SelectObject(hdcMem, g_hbmBall); 
GetObject(g_hbmBall, sizeof(bm), &bm); 
BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY); 

我發現很多遊戲都使用位圖來顯示動畫。但是我們可以用png來代替嗎?我們可以在GDI中使用png代替bitblt中的位圖嗎?

由於位圖是相當大的,當我轉換弗朗PNG(1KB - >位圖12KB)

感謝您閱讀本:)

回答

2

不,你不能用與PNG。 BitBlt(代表「位塊傳輸」,順便說一下)非常快,但它基本上只是一個簡單的內存複製例程。所以BitBlt除了未壓縮的位圖之外的任何圖像格式的唯一方法是首先將該格式轉換爲的位圖。

順便說一句,應用程序通常使用位圖進行動畫,因爲您不希望每次都需要解壓縮精靈圖像來增加整個幀渲染時間。位圖只是一個通常在內存中緩存內容以提高性能的示例。

+0

非常感謝解釋隊友:) – nXqd 2010-05-07 04:10:53

1

不,我不這麼認爲,但GDI +中支持PNG其他幾種格式。

+0

GDI +在打開時會將它們轉換爲位圖來支持PNG文件,因此提問者仍然會遇到他提到的尺寸問題。 – MusiGenesis 2010-05-04 11:30:09

相關問題