有没有可以取得半透明颜色的取色器?
2023-02-06 本文已影响0人
天下第九九八十一
根据已有的透明度来计算每个通道的颜色分量。这其实用数学推导的方法更容易一些。我们已经知道,在背景色上如何叠加半透明色,其 RGB 颜色分量的计算方法为:
solid_and_alpha
—— Alpha 混合:两个半透明色的叠加_richardbao2000
怎么根据这个原理制作半透明颜色的取色器呢,实在不想解方程啊。
两个未知量 a1 c1。需要两个方程,即未知颜色叠加在两个背景上的色彩。
二元一次方程怎么解来着,好像有公式?
整理下
v = c - cx + xy
v' = c' - c'x + xy
这是几次方程啊……
v-v' = c-c' - (c-c')x
(c-c')x = (c-c') - (v-v')
得 x = 1 - (v-v') / (c-c'),即为不透明度alpha,取值 0-1。
上取色器,c 白色 黑色,取两个值。
| c | v |
|---|---|
| 0xFFFFFF | 0xCCE8FF |
| 0x000000 | 0x001C33 |
解得 alpha= 1 - 0xCCCCCC / 0xFFFFFF = 0.1999……
呵呵哒
我就不信有人能心算
python 是个不错的计算器,管不得大家都喜欢。
alpha 算他 0.2,则色彩值就是 y=
v = c - cx + xy
取背景色 c 为零,则 y= v/x = 0x001C33 / 0.2 = 36095.0 = 8CFF
那么合起来原色因该是 0x33008CFF
screenshots.gif
正确。不过通道分量不因该分开来算么?