我想根据两个现有的叠加或更多计算新颜色。
我的颜色是这样存储的:
int color1 = 0xffFF00FF;
int color2 = 0x00FFFFFF;
现在你可以知道这是以十六进制格式分配的。我知道这些将在运行时(或编译期间)转换为“真实”数字。
0x
如您所知,这些十六进制“字符串”是在表示此颜色的 alpha之后使用前两个符号构建的(例如ff
,00
在这种情况下)。
我现在想覆盖它们,以便获得新的颜色 int 值。我希望能够选择哪种叠加算法(屏幕、乘法、加法、减法、除法等)。
我在互联网上做了很多研究,但没有告诉我如何解决我的问题。
我已经尝试了很多东西并进行了密集的测试和调试,但我现在已经到了我现在不知道该做什么的地步了。
例如:
我尝试做一些简单的数学运算来完成 add 方法等,如下所示:
return a + b;
return a - b;
return a * b;
return a / b;
// Even stuff like color burn
return (1 - (1 - a) / b);
我从Wikipedia得到这些,但我猜是基于 RGBA 格式(255/255/255/100)
而不是十六进制的输出。
然后我尝试使用java.awt.Color
类和二进制操作(a && 0xff)
等将十六进制内容转换为 RGBA 值。
我确实为此工作了好几天,我不知道我是如何详细完成所有这些事情的,但我知道它们都没有按预期工作(例如,没有考虑 Alpha 值。
也许我只是有一个完全错误的起点,或者只是在寻找和朝着错误的方向努力。到目前为止的一切(也在 SO 上)对于我的特殊情况来说是不够的。我发现的大部分内容都是关于 hex-string 到 int 对话和相反的;)
提前致谢,
基督教