我有下一个任务:
以下是我要找的图片:
这是一段代码片段(C#):
private Color getOverlapColor(Color frontColor, Color backColor)
{
//return...
}
答案 0 :(得分:0)
最简单的方法是假设线性比例。
int blend(int front, int back, int alpha)
=> back + (front - back) * alpha / 255;
然后:
Color getOverlapColor(Color front, Color back)
{
var r = blend(front.Red, back.Red, front.Alpha);
var g = blend(front.Green, back.Green, front.Alpha);
var b = blend(front.Blue, back.Blue, front.Alpha);
var a = unsure;
return new Color(r, g, b, a);
}
我不确定如何计算得到的alpha:
front.Alpha
和back.Alpha
都为0,则结果也为0. front.Alpha
为0,则结果为back.Alpha
。front.Alpha
为255,则back.Alpha
的值无关紧要。front.Alpha
和back.Alpha
均为50%,则结果必须大于50%。但我确信有人已经弄明白了以上所有内容。一些SVG渲染器,或GIMP,或其他一些图像处理库应该已经有了这个代码,经过仔细测试并在实践中得到了验证。