我在Java中转换颜色时遇到问题。简化的问题如下所示:

我的应用程序包含一个图像。我在这个图像上放置了一个矩形。矩形的颜色定义为新的Color(255,255,0,80)。

是否可以计算/将屏幕上显示的颜色转换为没有Alpha值且没有getPixelColor()-Method的颜色?公式不同:能否从具有Alpha值+基础颜色的Color中计算不具有Alpha值的Color?

我希望有一个人可以帮助我。

问候,
麦可

最佳答案

就像Wikipedia article所述(假设背景不透明):

int r, g, b;
r = fgColor.getRed() * fgColor.getAlpha() + bgColor.getRed() * (255 - fgColor.getAlpha());
g = fgColor.getGreen() * fgColor.getAlpha() + bgColor.getGreen() * (255 - fgColor.getAlpha());
b = fgColor.getBlue() * fgColor.getAlpha() + bgColor.getBlue() * (255 - fgColor.getAlpha());
Color result = new Color(r / 255, g / 255, b / 255);

免责声明:尚未测试过,但应该可以。

如果前景色是恒定的(例如,填充的透明矩形),则可以通过预先计算fgColor.getComponent() * fgColor.getAlpha()(255 - fgColor.getAlpha())进行很多优化。

07-26 04:54