我在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())
进行很多优化。