gpt4 book ai didi

c++ - alpha 混合后获取像素颜色

转载 作者:行者123 更新时间:2023-11-28 03:52:00 25 4
gpt4 key购买 nike

我有一个 RGBA 颜色,例如

255、0、0、100

如果放在白色背景上,我怎样才能得到 RGB?例如。这种红色会变得更浅,更像

255、100、100

如果把它放在黑色背景上也是一样。

这是否足够有意义?

最好是c++

最佳答案

以我的评论为例:

struct Color
{
int R;
int G;
int B;
int A;
};

Color Blend(Color c1, Color c2)
{
Color result;
double a1 = c1.A / 255.0;
double a2 = c2.A / 255.0;

result.R = (int) (a1 * c1.R + a2 * (1 - a1) * c2.R);
result.G = (int) (a1 * c1.G + a2 * (1 - a1) * c2.G);
result.B = (int) (a1 * c1.B + a2 * (1 - a1) * c2.B);
result.A = (int) (255 * (a1 + a2 * (1 - a1)));
return result;
}


void Example()
{
Color c1;
c1.R = 255;
c1.G = 0;
c1.B = 0;
c1.A = 100;

Color c2;
c2.R = 255;
c2.G = 255;
c2.B = 255;

Color blended = Blend(c1, c2);
int x = 50;
int y = 100;

// Pretend function that draws a pixel at (x, y) with rgb values
DrawPixel(x, y, blended.R, blended.G, blended.B);
}

关于c++ - alpha 混合后获取像素颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5149722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com