}
private int[] getTransImg(int alpha)
{
int [] tempRgbData= new int [desRgbdata.length];
for(int i=0;i<desRgbdata.length;i++)
{
int sr = (srcRgbdata[i]&0xff0000)>>16;
int sg = (srcRgbdata[i]&0xff00)>>8;
int sb = srcRgbdata[i]&0xff;
int dr = (desRgbdata[i]&0xff0000)>>16;
int dg = (desRgbdata[i]&0xff00)>>8;
int db = desRgbdata[i]&0xff;
int tr = (sr*alpha + dr*(255-alpha))/255;
int tg = (sg*alpha + dg*(255-alpha))/255;
int tb = (sb*alpha + db*(255-alpha))/255;
这样在Java中可以对以上计算方法封装成函数或类,以方便代码复用,对应的Java代码如下:
protected Color calculateAlphaValue(Color c1, Color c2, int alpha)
{
if (alpha < MIN_ALPHA)
alpha = MIN_ALPHA;
else if (alpha > MAX_ALPHA)
alpha = MAX_ALPHA;
int R = (c1.getRed() * (MAX_ALPHA - alpha) + c2.getRed() * alpha) / MAX_ALPHA;
int G = (c1.getGreen() * (MAX_ALPHA - alpha) + c2.getGreen() * alpha) / MAX_ALPHA;
int B = (c1.getBlue() * (MAX_ALPHA - alpha) + c2.getBlue() * alpha) / MAX_ALPHA;