游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4934|回复: 2

求救:我按要求将BitBlt()换成TransparentBlt()图像不能正确显

[复制链接]

1

主题

1

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2005-4-11 11:33:00 | 显示全部楼层 |阅读模式
这是我在看<学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(),那么人物就能动起来。

这是为什么啊?

42

主题

334

帖子

344

积分

中级会员

Rank: 3Rank: 3

积分
344
发表于 2005-4-11 14:49:00 | 显示全部楼层

Re:求救:我按要求将BitBlt()换成TransparentBlt()图像不能正确

图像的大小应该一样w,h。
TransparentBlt(dc.m_hDC,200,160,w,h,MemDC,0,0,w,h,RGB(0,0,0));

2

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2005-4-12 16:10:00 | 显示全部楼层

Re:求救:我按要求将BitBlt()换成TransparentBlt()图像不能正确

TransparentBlt(dc.m_hDC,200,160,w,h,MemDC,0,0,w,h,RGB(255,255,255));
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-25 06:26

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表