- typedef struct _RGBA
- {
- unsigned char r;
- unsigned char g;
- unsigned char b;
- unsigned char a;
- }RGBA, *PRGBA;
- void myAlphaBlend( PRGBA bg, PRGBA fr, PRGBA save )
- {
- unsigned char alpha = (unsigned char)((int)(bg->a) + fr->a - ((int)(bg->a) * fr->a >> 8));
- unsigned char r = 0, g = 0, b = 0;
- r = (unsigned char)( ((int)(bg->r) * bg->a + (int)(fr->r) * fr->a - (int)(bg->r) * bg->a * fr->a >> 8) / alpha );
- g = (unsigned char)( ((int)(bg->g) * bg->a + (int)(fr->g) * fr->a - (int)(bg->g) * bg->a * fr->a >> 8) / alpha );
- b = (unsigned char)( ((int)(bg->b) * bg->a + (int)(fr->b) * fr->a - (int)(bg->b) * bg->a * fr->a >> 8) / alpha );
- save->r = r;
- save->g = g;
- save->b = b;
- save->a = alpha;
- }
- //该片段来自于http://www.codesnippet.cn/detail/140720149973.html
来源: http://www.codesnippet.cn/detail/140720149973.html