无论是System.Draw.Color还是UnityEngine.Color对颜色操作的功能还是太少了,我们在用ps等调色面板使用的都是0-255范围的颜色值,但在图形层却使用的是0-1的浮点数,所以自己封了个支持多种Color操作的类型。
大写的RGB代表着0~255的整数。
小写rgb的范围是0~1的浮点数。
浮点转换整形使用四舍六入五求偶。
RGB转HSV公式:
R‘ = R/255
G‘ = G/255
B‘ = B/255
Cmax = max(R‘, G‘, B‘)
Cmin = min(R‘, G‘, B‘)
Δ = Cmax – Cmin
HSV转RGB公式:
C = V × S
X = C × (1 – |(H / 60°) mod 2 – 1|)
m = V – C
(R,G,B) = ((R‘+m)×255, (G‘+m)×255, (B‘+m)×255)
C#实现:
{{EJS0}}
参考资料:https://www.rapidtables.com/convert/color/rgb-to-hsv.html