图片透明效果处理

原创 2007年09月19日 12:13:00

          由于所有的图文件都是以一个四方矩形的形式来存储的,但有时我们可能会需要把一张怪物图片贴到窗口的背景上,而在这种情况下我们如果直接进行贴图的话,就会把这张图片的背景也一起贴到窗口背景图片中去,这当然不是我们想要的,所有我们就有必要把要贴的图片的不需要的部分给去了,就是所谓的图片透明效果处理。

          主要就是利用BitBlt()贴图函数以及Raster值的运算来将图片中不必要的部分去掉(又称去背),使得图中的主题可以与背景图完全融合。制作透明效果有多种方法,但基本上都是利用贴图时不同的Raster运算,通过转换而最后产生相同的透明效果。在这里先来介绍一种透明运算的方法: 

      首先得准备一张位图:

 

图中左边的图是要去背并贴到背景上的前景上的前景图,右边的黑白图称为“屏蔽图”,在透明的过程中会用到它。把要去背的位图与屏蔽图合并成同一张图,透明的时候再按照需要来进行裁切。可以把它分成两张图,但这样程序就得运行两次图文件的加载的操作。下面的贴图步骤:

   (1):将屏蔽图与背景图做“AND"(Raster值为SRCAND)运算,贴到目的地DC中;

  (2):将前景图与背景图作“OR”(Raster值为SRCPAINT)运算,贴到目的DC中。

为什么这样就会产生透明的效果呢?

这是因为:白色的RGB值为(255,255,255),二进制即为  111111111111......

黑色的RGB值为(0,0,0),龙江二进制即为  000000000000......

运算过程:

1:屏蔽图与背景图做“AND”运算

(1)屏蔽图中的图中的黑色部分与背景图作”AND“运算:

            000000........---------------------屏蔽图中黑色图点的颜色值

AND)011010.......---------------------背景图中彩色图点的颜色值

           000000.....------------------------运算后为黑色

(2)屏蔽图中的白色部分与背景图做”AND“运算:

             11111........---------------------屏蔽图中白色图点的颜色值

AND)011010.......---------------------背景图中彩色图点的颜色值

             011010.....------------------------运算后还是原来背景图的色彩

2,前景图与背景图作”OR”运算:

(1)前景图中的彩色部分与上面运算后的图作“OR”运算:

            101011........---------------------前景图中彩色图点的颜色值

OR) 000000.......---------------------背景图中变成黑色图点的颜色值

             101011.....------------------------运算后变成前景图的色彩

(2)前景图中的黑色部分与上图运算后的图作“OR”运算:

             000000........---------------------前景图中黑色图点的颜色值

OR)  101010.......---------------------背景图中彩色图点的颜色值

             011010.....------------------------运算后还是原来背景图的色彩

经过这一运算后所显示的画面就是所需要的透明图了。

Note;

BOOL BitBlt( HDC  目的DC ,//贴图

                       int  目的DC X坐标,  int  目的DC Y坐标,  int  贴到目的DC的宽度,

                       int   贴到目的DC的高度,   HDC  来源DC,   int   来源DC X坐标,   int   来源 DC Y坐标,

                      DWORD   贴图方式);

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

图片文字 点击效果半透明

  • 2014-06-19 10:09
  • 1.15MB
  • 下载

Symbian 图片透明效果

预备知识:1。会使用gc中提供的一些画图函数,如果BitBltmask等这些函数2。双缓冲。因为我们需要在这个过程中创建一张位图的缓冲,同时需要通过CBitmapContext在上面画些东西来制作一个...

OSG中使用png图片显示透明效果

常见的几种图片格式中只有png格式和gif格式的图片会有透明效果,其他tupi

IE6不支持PNG图片透明效果的完美解决方案(完善版)

可怜的IE6,不支持PNG图片透明, 这已经是其众多“BUG”中,不是那么显眼的一个, 但也是让部分人头痛的一个了。 (今天在机房那破机器上IE6忘了抓图了,现在想给大家看效果也难啊。) 发个...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)