2010-07-29 129 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