渐变多段线

时间:2020-03-05 18:53:26  来源:igfitidea点击:

有没有一种方法可以沿着弯曲的路径绘制一条直线,且该直线的梯度在垂直于直线方向的方向上发生变化?我正在为图形使用GDI +框架。

解决方案

回答

简单回答是不。我们可以根据需要使用AddPoint / AddLine / AddBezier等创建一个GraphicsPath来描述我们要绘制的内容,以描述我们要绘制的内容的复杂路径。绘制路径时,我们可以提供一个Brush,它可以是LinearGradientBrush或者RadialGradientBrush之类的东西。在绘制发生变化的方向上,这些渐变画笔都不会对绘制的实际路径有反应。我们必须将整个渐变区域的角度等指定为常数。

回答

可以使用的一种可能方法是将Graphics对象的剪辑区域设置为仅直线的剪辑区域。然后在直线的两端绘制线性渐变,例如

GraphicsPath gp = new GraphicsPath();

gp.AddArc(); // etc...

graphics.SetClip( gp );

graphics.FillRectangle( myLinearGradientBrush, gp.GetBounds());

上面的代码可能会为我们提供所需的内容。