曲线(Bezier)渐变

时间:2014-08-21 17:54:31

标签: c# wpf

如何绘制两种颜色的bezier?如下图? 我已经绘制了bezier,我可以用任何颜色填充它,但是我无法使渐变工作。

这就是我正在做的事情,我正在使用Path来创建bezier。

    private void test()
    {
        System.Windows.Media.GradientStop GradientStop1 = new System.Windows.Media.GradientStop();
        System.Windows.Media.GradientStop GradientStop2 = new System.Windows.Media.GradientStop();
        System.Windows.Media.LinearGradientBrush p_Fill; p_Fill = new System.Windows.Media.LinearGradientBrush(Colors.Blue, Colors.Red, new Point(0, 0.5), new Point(1, 0.5));
        p_Fill.GradientStops.Add(GradientStop1);
        p_Fill.GradientStops.Add(GradientStop2);
        Bez.Fill = p_Fill;
    }

这应该是

enter image description here

这就是我得到的

enter image description here

1 个答案:

答案 0 :(得分:2)

如果您需要在两个颜色的两半之间进行切割,则需要更多GradientStops

var grad3 = new System.Windows.Media.GradientStop() 
                  {Offset = 0.5, Color=Colors.Blue};
var grad4 = new System.Windows.Media.GradientStop() 
                  {Offset = 0.5, Color=Colors.Red};
GradientStop2.Offset = 1;
p_Fill.GradientStops.Add(GradientStop1);   
p_Fill.GradientStops.Add(grad3);
p_Fill.GradientStops.Add(grad4);
p_Fill.GradientStops.Add(GradientStop2);

另外,您必须为Brush而不是Stroke设置FillStrokeThickness确定曲线的粗细:

Bez.Stroke = p_Fill;
Bez.StrokeThickness = new Thickness(10);

enter image description here