如何设置a的渐变ProgressBar
在XAML中动态填充?
目前它是这样的:
![enter image description here](https://i.stack.imgur.com/ihsaV.jpg)
两个进度条的代码:
<ProgressBar.Foreground>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<LinearGradientBrush.RelativeTransform>
<CompositeTransform CenterY="0.5" CenterX="0.5" Rotation="270"/>
</LinearGradientBrush.RelativeTransform>
<GradientStop Color="Lime" Offset="0"/>
<GradientStop Color="Red" Offset="1"/>
</LinearGradientBrush>
</ProgressBar.Foreground>
但我想要鞋面的“结束”颜色ProgressBar
呈绿黄色,如下图所示。
意味着我希望进度条像第二个进度条一样充满,然后“剪切”其余部分(例如,当我有 60% 时,我希望右侧的 40% 不显示)
我该如何正确地做到这一点?
编辑(找到解决方案):
在尝试了几种方法(在栏上绘制一个具有默认颜色的矩形等)之后,我发现我可以修改offset
of GradientStop
通过代码:
color_UL.Offset = 2.0 - ul_val / 100;
意味着我减去我想要显示的百分比,例如30%(ul_val = 30
)偏移量设置为 170% (1.7),但条形本身显示 30%,且颜色渐变平滑且正确。如果我的条形图上有 100%,它会计算2.0 - 1.0
其值为 1(与正常情况一样,如图 1 中的第 2 条所示)。
我知道这听起来很令人困惑,所以这是我想要的图片:
![ProgressBar with fitting gradient](https://i.stack.imgur.com/m6dQc.jpg)
实现此布局的第二种方法是将背景设置为渐变颜色,然后使用前景色为灰色,请记住进度条的值需要为
100 值
因为您将设置条形灰色区域的值,该值从 100% 开始(值 = 0 或条形图中没有灰色)并向 0% 移动(值 = 100 或整个条形为灰色)
100% (value = 100 - %)
99% (value = 100 - %)
50% (value = 100 - %)
0% (value = 100 - %)
在您的 MainPage.xaml.cs 中(或您需要调用它的任何地方)
var percentage = 75;
progressBar.Value = 100 - percentage;
在您的 MainPage.xaml 中
<ProgressBar x:Name="progressBar" HorizontalAlignment="Left" Height="80" Margin="-82,121,0,0" VerticalAlignment="Top" Width="270" RenderTransformOrigin="0.5,0.5" UseLayoutRounding="False" d:LayoutRounding="Auto"
Minimum="0" Maximum="100" Value="0" Foreground="Gray">
<ProgressBar.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<LinearGradientBrush.RelativeTransform>
<CompositeTransform CenterY="0.5" CenterX="0.5" Rotation="270"/>
</LinearGradientBrush.RelativeTransform>
<GradientStop Color="Lime" Offset="0"/>
<GradientStop Color="Red" Offset="1"/>
</LinearGradientBrush>
</ProgressBar.Background>
<ProgressBar.RenderTransform>
<CompositeTransform Rotation="90"/>
</ProgressBar.RenderTransform>
</ProgressBar>
您可能需要调整进度条的方向,以便其正确显示,上面的代码适用于垂直条,可用于燃油表等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)