我有一个带有Color属性的对象列表。该列表可以包含10到4000之间的任意数量的项目。我希望第一个项目的Color属性为绿色,而最后一个项目为红色。并且项目之间的所有中间项目都应根据其位置(最早的绿色,后来的红色)获得介于红色和绿色(渐变)之间的颜色。下面的代码仅在列表计数小于255时有效。它将返回所有白色如果列表大小超过255
Color start = Colors.White;
Color end = Colors.Green;
int steps = lstTag.Count;
int stepA = ((end.A - start.A) / (steps - 1));
int stepR = ((end.R - start.R) / (steps - 1));
int stepG = ((end.G - start.G) / (steps - 1));
int stepB = ((end.B - start.B) / (steps - 1));
int i = 0;
foreach (ArgsData data in lstTag)
{
var a = byte.Parse((start.A + (stepA * i)).ToString());
var r = byte.Parse((start.R + (stepR * i)).ToString());
var g = byte.Parse((start.G + (stepG * i)).ToString());
var b = byte.Parse((start.B + (stepB * i)).ToString());
data.ColorCode = new SolidColorBrush(Color.FromArgb(a, r, g, b));
i++;
}
我们将不胜感激任何帮助。