要制作半透明效果,必须先决定图形所要显示的透明度,例如透明度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]);
}
}