使用Alpha混合将ARBG转换为RGB

Bob*_*Bob 23 c# colors

假设我们有ARGB颜色:

Color argb = Color.FromARGB(127, 69, 12, 255); //Light Urple.
Run Code Online (Sandbox Code Playgroud)

当它在现有颜色上绘制时,颜色将会混合.因此,当它与白色混合时,产生的颜色是Color.FromARGB(255, 162, 133, 255);

解决方案应该像这样工作:

Color blend = Color.White; 
Color argb = Color.FromARGB(127, 69, 12, 255); //Light Urple.      
Color rgb = ToRGB(argb, blend); //Same as Color.FromARGB(255, 162, 133, 255);
Run Code Online (Sandbox Code Playgroud)

什么是ToRGB实施?

Lou*_*ndy 18

它被称为alpha混合.

在伪代码中,假设背景颜色(混合)总是有255个alpha.还假设alpha为0-255.

alpha=argb.alpha()
r = (alpha/255)*argb.r() + (1 - alpha/255)*blend.r()
g = (alpha/255)*argb.g() + (1 - alpha/255)*blend.g()
b = (alpha/255)*argb.b() + (1 - alpha/255)*blend.b()
Run Code Online (Sandbox Code Playgroud)

注意:根据语言的不同,您可能需要对浮点数/ int数学和舍入问题有点(更多)小心.相应地铸造中间体

编辑添加:

如果你没有alpha为255的背景颜色,那么代数会变得更复杂.我以前做过,这是一个有趣的练习留给读者(如果你真的需要知道,问另一个问题:).

换句话说,什么颜色C混合到某些背景中与混合A相同,然后混合B.这有点像计算A + B(与B + A不同).