我正在寻找根据亮度对我们项目中的一些颜色进行排序,所以我可能需要根据颜色进行YIQ表示。
所以我非常期待在C#中寻找一些给定RGB格式颜色的YIQ表示
我在wiki和其他一些网站上发现了这个公式,用于从RGB转换为YIQ比例:
这是RGB - > YIQ转换:
[ Y ] [ 0.299 0.587 0.114 ] [ R ]
[ I ] = [ 0.596 -0.275 -0.321 ] [ G ]
[ Q ] [ 0.212 -0.523 0.311 ] [ B ]
但是现在如何从这个公式得到的Y,I和Q值中获取C#中的Color值。
所以,如果我有这种颜色:#FF832727是RGB格式,如何以YIQ比例获得相应的颜色。
答案 0 :(得分:2)
可能的实施,如果我理解你的权利
List<Color> colors = new List<Color> {
Color.Wheat,
Color.Black,
Color.Red,
Color.FromArgb(unchecked ((int)0xFF832727U))
};
// You don't need convert colors into YIQ (i.e. matrix multiplication)
// just compare brightness (Y component)
colors.Sort((Comparison<Color>) (
(Color left, Color right) =>
(left.R * 299 + left.G * 587 + left.B * 114).CompareTo(
right.R * 299 + right.G * 587 + right.B * 114)
));
答案 1 :(得分:1)
亮度方法已经在Color类方法中。
var colorList = new List<System.Drawing.Color>
{ Color.Red, Color.Green, Color.Blue};
colorList.Sort((color1, color2) =>
(color1.GetBrightness()).CompareTo(color2.GetBrightness()));