我有一个IEnumerable of Color,我想用它作为画笔的基础。
目前,我将IEnumerable转换为Bitmap,转换为bitmapsource,转换为画笔,但这有点慢,是否有任何刷类可以更快地完成我想要的操作?
编辑,我想要做的事情:使用笔刷在绘图视觉中绘制一条线,其中IEnumerable of Color用作线条颜色。如果我有一个{Colours.Green,Colours.Red}的集合,我希望生成的线条为半绿色,半红色。
答案 0 :(得分:0)
这是一个将IEnumerable转换为LinearGradientBrush的方法。 每种颜色都有2个渐变色标,以便在颜色之间创建硬转换,而不是渐变。
LinearGradientBrush CreateBrush(IEnumerable<Color> colors) {
var colorArray = colors.ToArray();
var step = 1.0 / colorArray.Length;
var gradientStops = new GradientStopCollection();
for (int i = 0; i < colorArray.Length; i++) {
var color = colorArray[i];
gradientStops.Add(new GradientStop(color, i * step));
gradientStops.Add(new GradientStop(color, (i + 1) * step));
}
return new LinearGradientBrush(gradientStops);
}