我自己也尝试过但没能弄明白,我从another thread中找到了一些代码,可以将两种颜色(整数)按指定的分数进行组合,但我只是没有足够的技巧让它使用ARGB整数。有人知道如何将这个函数从组合RGB转换为组合ARGB吗?
public static int mixColors(int a, int b, float fractionB){
int mask1 = 0xff00ff;
int mask2 = 0x00ff00;
int f2 = (int)(256 * fractionB);
int f1 = 256 - f2;
return ((((( a & mask1 ) * f1 ) + ( ( b & mask1 ) * f2 )) >>> 8 ) & mask1 )
| ((((( a & mask2 ) * f1 ) + ( ( b & mask2 ) * f2 )) >>> 8 ) & mask2 );
}
我试过将掩码设置为mask1 = 0x00ff00ff; mask2 = 0xff00ff00;
,但函数仍然只输出3字节的数字。
1条答案
按热度按时间41zrol4v1#
...“由于使用int,第4个字节丢失-您可以在计算(掩码和因子)中使用long来避免这种情况”-user 16320675
谢谢!我应该想到的,但我猜他们都是这么说的。以下是32位整数ARGB颜色值的更新函数: