游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3494|回复: 7

看不懂,不明白意思,help~~

[复制链接]

12

主题

41

帖子

60

积分

注册会员

Rank: 2

积分
60
发表于 2004-7-29 20:04:00 | 显示全部楼层 |阅读模式
谁可以帮我解shi一下吗
        HBITMAP hBMP   =CreateCompatibleBitmap(hdc0,nW0, nH0);
        HBITMAP mBMP   =CreateBitmap(nW0,nH0,1,1,NULL);       
        HDC                hDC    =CreateCompatibleDC(hdc0);
        HDC                mDC    =CreateCompatibleDC(hdc0);
        HBITMAP oldBMP =(HBITMAP)SelectObject(hDC, hBMP);
        HBITMAP oldmBMP=(HBITMAP)SelectObject(mDC, mBMP);

//        if (nW0==nW1&&nH0==nH1)
                BitBlt(hDC,0,0,nW0,nH0,hdc1,nX1,nY1,SRCCOPY);
        //else
        //        StretchBlt(hDC,0,0,nW0,nH0,hdc1,nX1,nY1,nW1,nH1,SRCCOPY);

        SetBkColor(hDC, Tcol);
        BitBlt(mDC,0,0,nW0,nH0,hDC,0,0,SRCCOPY);
       

        SetBkColor(hDC, RGB(0,0,0));
        SetTextColor(hDC, RGB(255,255,255));
        BitBlt(hDC,0,0,nW0,nH0,mDC,0,0,SRCAND);

        SetBkColor(hdc0,RGB(255,255,255));
        SetTextColor(hdc0,RGB(0,0,0));
        BitBlt(hdc0,nX0,nY0,nW0,nH0,mDC,0,0,SRCAND);

        BitBlt(hdc0,nX0,nY0,nW0,nH0,hDC,0,0,SRCPAINT);

12

主题

41

帖子

60

积分

注册会员

Rank: 2

积分
60
 楼主| 发表于 2004-7-29 20:06:00 | 显示全部楼层

Re: 看不懂,不明白意思,help~~

help 在线等答案

最好,帮我每一句注解一下,
谢了

42

主题

334

帖子

344

积分

中级会员

Rank: 3Rank: 3

积分
344
发表于 2004-7-30 08:35:00 | 显示全部楼层

Re:看不懂,不明白意思,help~~

//**************************************************
//TransparentBlt2 (......)透明显示
// 根据关键色,将hdc1中的图形在hdc0中
// 自动生成掩模,并生成透明图形。
//**************************************************
void TransparentBlt2( HDC hdc0,        // 目标DC
                int nX0,int nY0,// 目标偏移
                int nW0,int nH0,// 目标宽高度
                HDC hdc1,        // 源DC
                int nX1,int nY1,// 源起点
                int nW1,int nH1,// 源宽高度
                UINT Tcol        // 透明色,COLORREF类型
                  )
{if(sys>1)//是98以上的系统,直接调API函数TransparentBlt()
{TransparentBlt(hdc0,nX0,nY0,nW0,nH0,hdc1,nX1,nY1,nW1,nH1,Tcol);
  return;
}
//A、建立图形资源。
HBITMAP hBMP =CreateCompatibleBitmap(hdc0,nW0, nH0);//创建位图内存
HBITMAP mBMP =CreateBitmap(nW0,nH0,1,1,NULL);        //创建单色掩码位图
HDC        hDC =CreateCompatibleDC(hdc0);        //创建设备句柄
HDC        mDC =CreateCompatibleDC(hdc0);        //创建设备句柄
HBITMAP oldBMP =(HBITMAP)SelectObject(hDC, hBMP);
HBITMAP oldmBMP=(HBITMAP)SelectObject(mDC, mBMP);
//B、拷贝或压缩拷贝源DC中的位图到临时hDC中。
if (nW0==nW1&&nH0==nH1)
        BitBlt(hDC,0,0,nW0,nH0,hdc1,nX1,nY1,SRCCOPY);
else
        StretchBlt(hDC,0,0,nW0,nH0,hdc1,nX1,nY1,nW1,nH1,SRCCOPY);
//C、生成掩码位图。
SetBkColor(hDC, Tcol);// 设置透明色
BitBlt(mDC,0,0,nW0,nH0,hDC,0,0,SRCCOPY);// 生成透明区域为白色,其它区域为黑色的掩码位图
SetBkColor(hDC, RGB(0,0,0));                // 生成透明区域为黑色,其它区域保持不变的位图
SetTextColor(hDC, RGB(255,255,255));        // 白色
BitBlt(hDC,0,0,nW0,nH0,mDC,0,0,SRCAND);
SetBkColor(hdc0,RGB(255,255,255));        // 透明部分保持屏幕不变,其它部分变成黑色
SetTextColor(hdc0,RGB(0,0,0));                // 黑色
//D、透明显示
BitBlt(hdc0,nX0,nY0,nW0,nH0,mDC,0,0,SRCAND);//"与"运算,在hdc0生成掩模
BitBlt(hdc0,nX0,nY0,nW0,nH0,hDC,0,0,SRCPAINT);//"或"运算,生成最终透明效果
//E、释放图形资源       
SelectObject(hDC, oldBMP);
DeleteDC(hDC);
SelectObject(mDC, oldmBMP);
DeleteDC(mDC);
DeleteObject(hBMP);
DeleteObject(mBMP);
}

12

主题

41

帖子

60

积分

注册会员

Rank: 2

积分
60
 楼主| 发表于 2004-7-30 18:08:00 | 显示全部楼层

Re: 看不懂,不明白意思,help~~

谢了,hehe!

0

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2004-8-15 18:48:00 | 显示全部楼层

Re:看不懂,不明白意思,help~~

晕啊

25

主题

87

帖子

87

积分

注册会员

Rank: 2

积分
87
发表于 2004-8-15 19:05:00 | 显示全部楼层

Re:看不懂,不明白意思,help~~

在c 部分
为何少了 BitBlt(hDC,0,0,nW0,nH0,mDC,0,0,SRCAND);
图片渲染结果会是黑色的背景?

28

主题

433

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
发表于 2004-8-16 09:06:00 | 显示全部楼层

Re:看不懂,不明白意思,help~~

BitBlt(hDC,0,0,nW0,nH0,mDC,0,0,SRCAND);
//----------------------------------------------------------
hDC屏幕的DC
mDC内存中的DC

这句的意思是 把 内存中的mDC的图贴到屏幕上~

楼上大哥 好好 学学 基础知识吧~

25

主题

87

帖子

87

积分

注册会员

Rank: 2

积分
87
发表于 2004-8-16 16:08:00 | 显示全部楼层

Re:看不懂,不明白意思,help~~

都是哪些基础呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-16 23:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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