产生半透明效果的步骤

要制作半透明效果,必须先决定图形所要显示的透明度,例如透明度100%就是完全透明,透明度50%就是半透明。下面就来说明制作半透明效果的步骤:

      步骤一:取出位图的各个像素点,将各像素点的RGB值乘以透明度百分比,然后将它放入到一个内存数组中。

     步骤二:取出背景图与位图重叠部分的像素点,将各像素点的RGB值乘以透明度百分比,然后再将其放入另一个内存数组中。

       步骤三:将前两个步骤所产生的数组相加,就产生了所有半透明的色彩值了。

假设我们要制作透明度为30%的半透明图,则其大致的计算公式如下:

半透明图色彩=来源图色彩*30%+背景图色彩*70%

主要代码:

PixelBytes=bmpX.bmBitsPixel/8;


for(y=0;y<bmpX.bmHeight;y++){


for(x=0;x<bmpX.bmWidth;x++){


rgb_b=y*bmpX.bmWidthBytes+x*PixelBytes;


//将B色彩值乘以50%

px[rgb_b+0]=(BYTE)(px[rgb_b+0]*.5f);


//将G色彩值乘以50%

px[rgb_b+1]=(BYTE)(px[rgb_b+1]*0.5f);


//将R色彩值乘以50%

px[rgb_b+2]=(BYTE)(px[rgb_b+2]*0.5f);

}

}


for(y=0;y<(bmpX.bmHeight);y++){


for(x=0;x<(bmpX.bmWidth);x++){


rgb_b=(x)*PixelBytes+(y)*bmpY.bmWidthBytes;


i=(y)*bmpX.bmWidthBytes+(x)*PixelBytes;


//将B色彩值乘以50%并与px相加

px1[rgb_b+0]=(BYTE)(px1[rgb_b]*0.5f+px[i]);


//将G色彩值乘以50%并与px相加

px1[rgb_b+1]=(BYTE)(px1[rgb_b+1]*0.5f+px[i+1]);


//将R色彩值乘以50%并与px相加

px1[rgb_b+2]=(BYTE)(px1[rgb_b+2]*0.5f+px[i+2]);

}

}


 

posted @ 2012-03-20 09:05  hailong  阅读(417)  评论(0编辑  收藏  举报