图片透明效果处理

原创 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   贴图方式);

Android Gallary图片游览效果--透明的倒影,层叠的图片,渐变的颜色透明度

下面,是我参照他的博客实现的一个效果图。这个程序,在他的基础上进行了一些改良,但改良得不是很好,嘻嘻,等有空,继续研究。该实                    下载路径:http://downl...
  • heng615975867
  • heng615975867
  • 2013年10月25日 11:08
  • 5574

VB.NET两种方法使PictureBox图片框可透明

在很多的UI设计上,透明处理作为一个又炫又实用的方法受到很多人的喜爱,就像曾经VB6.0版本的图片框不支持Alpha通道直接导致不支持透明效果让很多地方不得不用底色相同来模仿透明效果,实在是让人头疼,...
  • lj1995091
  • lj1995091
  • 2016年01月20日 10:11
  • 3437

opengl透明mask图片做蒙版效果的实现

hello,朋友们,我又来了,还记得上篇文章提到的事情否?没错,加载png只是第一步,接下来要实现用mask图扣掉png中不需要的部分。(也就是cocos2d-x中那个clipingnode的效果)。...
  • glunoy
  • glunoy
  • 2016年03月29日 17:32
  • 2075

MFC仿QQ图片查看器,透明效果VS2008

  • 2015年08月06日 16:22
  • 1.24MB
  • 下载

图片文字 点击效果半透明

  • 2014年06月19日 10:09
  • 1.15MB
  • 下载

鼠标经过图片半透明效果文字滑动显示

  • 2017年05月07日 16:04
  • 5KB
  • 下载

wince#中使用AlphaBlend实现图片透明效果

  • 2010年03月30日 11:13
  • 509KB
  • 下载

VC++ 设置并叠加透明图片,制作特技效果

  • 2010年07月09日 15:05
  • 130KB
  • 下载

PC与WinCE通用的图片显示类(支持PNG半透明效果)

  • 2013年11月12日 18:04
  • 5KB
  • 下载

gif透明实现图片圆角效果

  • 2010年05月10日 17:21
  • 61KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:图片透明效果处理
举报原因:
原因补充:

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