关于制作透明位图的一点理解

  今天看了一下午终于弄清楚怎么弄了写下来留个记忆,顺便分享下!!

 

  其实透明位图制作就是通过位运算来制作的。

  我当时想不明白的地方有两点:

 

1  遮罩怎么制作、什么作用

2 异或之后什么结果和怎么办

一 、    先说说异或两张图片异或我想成一个大圆中间有个小空心的 和一个小的实心圆

 

1.    两个圆以圆心对齐,异或一次不重叠的地方留下了重叠的地方没了。留下来的图形是大圆的外圈和圆心的小圆。

2.   小圆和大圆再异或一次大圆恢复了原样小圆没有了(大圆可以想成背景,小圆可以想成要贴的图片)。

 

 

这样来说透明完成了只不过整个图片全部透明了(理论上,实际上是根本就不存在)

 

二、    要想只把图片的背景透明物体留下这个就要在两次异或之间再加一步那就是遮罩了:

 

1.    遮罩是创建一个单色的bitmap用    bitmap.CreateBitmap()     这个遮罩的名字叫    zhezhao_map。

 

        还要创建一个bitmap    用来加载你想粘贴的位图的               这个名字叫               ziyuan_map。(见谅本人英语不过关)

 

 2.     然后创建两个位设备上下文用来装载这两个位图        一个叫     zhezhao_dc       一个叫     ziyuan_dc.

 

3.    开始制作遮罩:直接把ziyuan_dc   COPY 到 zhezhao_dc 就行了。

       感觉拷贝的过程要讲一下:由于自己的资源位图  ziyuan_map 是彩色的而  zhezhao_map 是单色的这个中间需要转换(内部的)。

       每个设备上下文都有背景色(bkcolor)和前景色(textcolor),从彩色向单色转换时所有和设备背景色(bkcolor)相同的颜色转换为 1 (白色) 不同的被视为前景色转换为 0 (黑色)。

       如果我们把我们资源位图(ziyuan_map)的背景色指定为设备上下文的背景色(ziyuan_dc.SetBkColor(xxx))  这样拷贝过后的  zhezhao_dc 是什么样的想到了吗,呵呵背景色部分白了我们想要的部分黑了---->>遮罩好了。

       我们只需要把这张遮罩在两次异或之间来一次    位与(SRCAND  ) OK  了!!(在这之前把 背景(beijing_dc) 的前景色设为黑色   背景色设为白色因为复制回来还要转换一次,它是转换过后才位与的)

       等下次异或的时候呵呵自己想吧!!

 

     总共进行了两次异(SRCCONVERT)或和一次位与(SRCAND)      分别是   ziyuan_dc 异或到背景     然后     zhezhao_dc  位与到背景     最后   ziyuan_dc 再异或一次出来了。

    

 

    不对的地方还请指出交流交流!!!!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值