Я пытаюсь нарисовать ArcSegment в своем элементе управления WPF, который используется как индикатор циклического прогресса и имеет трехцветный градиент.Следует начинать с красного на 0%, желтого на 50% и зеленого на 100%.Таким образом, для 75% это должно выглядеть так:

Я пробую это с LinearGradientBrush
<Path StrokeThickness="25">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="50, 12.5">
<ArcSegment RotationAngle="0" SweepDirection="Clockwise"
IsLargeArc="true"
Point="12.5, 75"
Size="62.5, 62.5">
</ArcSegment>
</PathFigure>
</PathGeometry>
</Path.Data>
<Path.Stroke>
<LinearGradientBrush StartPoint="0, 0.5" EndPoint="1, 0.5">
<GradientStop Offset="0" Color="Green" />
<GradientStop Offset="0.5" Color="Red" />
<GradientStop Offset="1.0" Color="Yellow"/>
</LinearGradientBrush>
</Path.Stroke>
</Path>
Или в другом направлении:
<Path.Stroke>
<LinearGradientBrush StartPoint="0.5, 0" EndPoint="0.5, 1">
<GradientStop Offset="0" Color="Green" />
<GradientStop Offset="0.5" Color="Red" />
<GradientStop Offset="1.0" Color="Yellow"/>
</LinearGradientBrush>
</Path.Stroke>
Но проблема в том, что градиент используется для всей поверхности, и поэтому я нарисовал красным два вместо одного раза и не правильно в начале цикла:

Я пытаюсь использовать кисть с изображением, имеющим градиент, как я хочу.
<Path.Stroke>
<ImageBrush ImageSource="../brush.png" />
</Path.Stroke>
Это прекрасно работает для значений> 75%, но длянижние значения также нарисована зеленая часть, что не должно быть.

Любой идеал, что я могу сделать, чтобы сделать эту работу?