无论是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‘)

Δ = CmaxCmin

HSV转RGB公式:

C = V × S

X = C × (1 – |(H / 60°) mod 2 – 1|)

m = VC

(R,G,B) = ((R‘+m)×255, (G‘+m)×255, (B‘+m)×255)

C#实现:

{{EJS0}}

参考资料:https://www.rapidtables.com/convert/color/rgb-to-hsv.html