我在使用Java转换Colors时遇到了问题。简化问题如下所示:
我的应用程序包含图像。我在这张图片上放了一个Recangle。 Rectangle的颜色定义为new Color(255,255,0,80)。
是否可以计算/转换屏幕上显示的颜色为没有Alpha值的颜色没有 getPixelColor() - 方法?不同的配方:我可以从具有alpha值+基础颜色的颜色计算没有alpha值的颜色吗?
我希望有人可以帮助我。
此致 迈克尔
答案 0 :(得分:7)
正如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())
来优化很多。