|
|
这是我在看<学VC,编游戏>遇到的一个问题,希望大家能帮帮忙:
为了使图像透明显示,我想用TransparentBlt()来解决。
于是先导入用这个函数必须的msimg32.lib
(在PROJECT->SETTINGS->LINK中的OBJECT/LIBRARY.MODULES一栏中加入 msimg32.lib)
接着我改了 让我动吧 中的OnTimer()中的一条语句:
void CMyDlg::OnTimer(UINT nIDEvent)
{ CClientDC dc(this);
if(getpic("人",p)==FALSE)
{AfxMessageBox(cc+"没找到");return;}
SelectObject(MemDC,bit);
//BitBlt(dc.m_hDC,200,160,w,h,MemDC,0,0,SRCCOPY);
TransparentBlt(dc.m_hDC,200,160,w,h,MemDC,0,0,21,45,RGB(0,0,0));
p++;
if(p>m1) p=m0;
CDialog::OnTimer(nIDEvent);
}
我是将BitBlt(dc.m_hDC,200,160,w,h,MemDC,0,0,SRCCOPY)注释了,
接着加上了TransparentBlt(dc.m_hDC,200,160,w,h,MemDC,0,0,21,45,RGB(0,0,0));
编译连接都没错,可是执行效果却是画面上更本看不到那个角色了,我将
TransparentBlt(dc.m_hDC,200,160,w,h,MemDC,0,0,21,45,RGB(0,0,0));
换成TransparentBlt(dc.m_hDC,200,160,w,h,MemDC,0,0,21,45,RGB(255,255,255));
结果还是一样的。
在我另外的一个程序中,我对图像也有这样的处理,修改的地方也是在OnTimer()中,
可是运行效果是图像被透明地显示了,却只是一幅静止的画面。如果我将TransparentBlt()换成BitBlt(),那么人物就能动起来。
这是为什么啊? |
|