颜色问题
问题描述:
我编写的是一款蛇游戏,并且我在游戏中使用了一个苹果图像,所以我创建了一个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
答
从elsewhere这个想法,你需要通过CreateCompatibleBitmap
你的目标的实际DC (例如GetDC(NULL)
)而不是刚创建的mdc
。因为在CreateCompatibleDC
之后,当前(=初始,默认)位图是CreateCompatibleBitmap(mdc...)
将匹配的单色像素1x1x1b。
+0
+1我犯这个错误的次数比我想承认的还多。 – 2010-08-11 18:24:02
打电话给BitBlt将是有趣的知道... – pascal 2010-07-29 04:44:28
p.s.如果满意的话,请'接受'答案......这对名誉......或对于稍后可能会阅读此问题的任何人都有好处。 – pascal 2010-07-29 05:48:48