
前景色fgcolor=(r1,g1,b1,alpha)
背景色bgcolor=(r2,g2,b2)
那么最后显示的颜色为(r2,g2,b2),r2=(r2*(256-a)+r1*alpha)/256,其它颜色一样计算。
java中绘制带有alpha的png图片的时候 先把rgb颜色和alpha值跟当前背景计算一下,然后再用gc的alpha和当前背景色做计算 得到最终显示的颜色。
uint32_t* data = p_color;
uint32_t len = hor_len / 4;
for (uint32_t i = 0; i < len; i++) {
uint8_t* p_r = (uint8_t*)data;
uint8_t* p_g = (uint8_t*)data + 1;
uint8_t* p_b = (uint8_t*)data + 2;
uint8_t* p_a = (uint8_t*)data + 3;
// fgcolor=(r1,g1,b1,alpha)
// bgcolor=(r2,g2,b2)
// (r2*(256-a)+r1*alpha)/256
*p_r = ((*p_r) * (*p_a) / 256);
*p_g = ((*p_g) * (*p_a) / 256);
*p_b = ((*p_b) * (*p_a) / 256);
printf("0x%02x,",*p_a);
data ++;
}
puts("");
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)