【发布时间】:2018-10-24 12:58:29
【问题描述】:
我尝试在我的 WPF 控件中绘制一个 ArcSegment,该控件用作循环进度条并具有三色渐变。它应该以红色为 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% 的值,但对于较低的值,绿色部分也会被绘制出来。
任何想法我可以做些什么来完成这项工作?
【问题讨论】: