我正在为每种颜色指定一个数值。例如:
Color.red: 12
Color.Blue: 6
我需要找到两种颜色之间的颜色(例如,红色和蓝色)。但是怎么样?我试过这个,
(Color.red+color.blue)/2=> (12 + 6)/2 = 9
9对应Color.yellow
答案 0 :(得分:5)
您需要使用颜色的RGB值并在它们之间进行插值。使用单一值不会给您带来所需的歧视。
yx引用Drawing a line with a gradient color的答案看起来像是一个好的起点
答案 1 :(得分:1)
对于具有红色,绿色和白色的计算机,颜色通常表示为六位十六进制值。蓝色按顺序分别取两位数,例如FF0000为红色,00FF00为蓝色,0000FF为绿色。您应该考虑如何在这些值之间移动。
Michael Leigeber有一个很好的color transition algorithm in JavaScript你可以下载,看看他是如何实现两个值之间的移动。
答案 2 :(得分:0)
此问题要求您拆分每种颜色的alpha,红色,绿色和蓝色组件,找到每种颜色的平均值,并创建一种新颜色:
Color first = Color.Red;
Color second = Color.Blue;
byte r = (byte)((first.R + second.R) / (byte)2);
byte g = (byte)((first.G + second.G) / (byte)2);
byte b = (byte)((first.B + second.B) / (byte)2);
byte a = (byte)((first.A + second.A) / (byte)2);
Color mix = Color.FromArgb(a, r, g, b);