【发布时间】:2009-04-23 00:03:43
【问题描述】:
有没有一种方法可以在 c# 中生成非线性渐变画笔?
澄清一下:我不是在寻找可以应用于非线性路径的渐变。相反,我正在寻找两种颜色之间的渐变,这种渐变在两种颜色之间以非线性方式渐变,即渐变开始时变化的速度更快,而随着画笔接近终点而变慢。
在 c# 中使用 gdi+ 是否也能做到这一点?
【问题讨论】:
有没有一种方法可以在 c# 中生成非线性渐变画笔?
澄清一下:我不是在寻找可以应用于非线性路径的渐变。相反,我正在寻找两种颜色之间的渐变,这种渐变在两种颜色之间以非线性方式渐变,即渐变开始时变化的速度更快,而随着画笔接近终点而变慢。
在 c# 中使用 gdi+ 是否也能做到这一点?
【问题讨论】:
是的,为画笔设置混合。
LinearGradientBrush blendBrush = new LinearGradientBrush(Rectangle, Color.Red, Color.White, 360f);
Blend blend = new Blend();
blend .Factors = new float[] { 1.0f, 0.9f, 0.8f, 0.7f, 0.6f, 0.5f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f };
blend .Positions = new float[] { 0, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1.0f };
blendBrush.Blend = blend ;
这个例子会开始淡出,然后回到之前的颜色。所以有点从中心效果填充。
【讨论】:
使用 LinearGradientBrush 的 Blend 属性 -
http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.blend(VS.80).aspx
【讨论】: