2010-07-29 160 views
2

我編寫的是一款蛇遊戲,並且我在遊戲中使用了一個蘋果圖像,所以我創建了一個DC,然後將蘋果加載到這個DC,當遊戲運行時,它應該複製蘋果到緩衝區,然後緩衝區到屏幕,但蘋果在屏幕上結束黑色和白色,any1有想法爲什麼?這裏是我的一些代碼,可以幫助...顏色問題

「蘋果裝載程序」

invoke GetModuleHandle,0 
invoke LoadBitmap,eax,10 
push eax 
invoke CreateCompatibleDC,0 
pop ecx 
mov [mapple],eax 
invoke SelectObject,[mapple],ecx 

「緩衝創建過程」

invoke CreateCompatibleDC,0 
mov [mdc],eax 
invoke CreateCompatibleBitmap,[mdc],800,600 
mov [mbmp],eax 
invoke SelectObject,[mdc],[mbmp] 
invoke SetBkMode,[mdc],TRANSPARENT 
invoke SetTextColor,[mdc],0FFFFFFh 

呼叫至BitBlt函數

invoke BitBlt,[mdc],[applex],[appley],20,20,[mapple],0,0,SRCCOPY 


invoke GetDC,0 
invoke BitBlt,eax,0,0,800,600,[mdc],0,0,SRCCOPY 
+0

打電話給BitBlt將是有趣的知道... – pascal 2010-07-29 04:44:28

+1

p.s.如果滿意的話,請'接受'答案......這對名譽......或對於稍後可能會閱讀此問題的任何人都有好處。 – pascal 2010-07-29 05:48:48

回答

2

elsewhere這個想法,你需要通過CreateCompatibleBitmap你的目標的實際DC (例如GetDC(NULL))而不是剛創建的mdc。因爲在CreateCompatibleDC之後,當前(=初始,默認)位圖是CreateCompatibleBitmap(mdc...)將匹配的單色像素1x1x1b。

+0

+1我犯這個錯誤的次數比我想承認的還多。 – 2010-08-11 18:24:02