如何找到两种颜色之间的颜色?

时间:2009-06-11 12:10:48

标签: c# .net asp.net algorithm

我正在为每种颜色指定一个数值。例如:

Color.red: 12 
Color.Blue: 6

我需要找到两种颜色之间的颜色(例如,红色和蓝色)。但是怎么样?我试过这个,

(Color.red+color.blue)/2=> (12 + 6)/2 = 9

9对应Color.yellow

3 个答案:

答案 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);