WPF自定义绘制多个进度条
-
03-07-2019 - |
解决方案
我不太确定你打算如何让进度条结合不同的进展,但是如果说进展最远的是z-index的最低点而且进展最少的是顶部,那么我会做事情就是这样:
1)我可能会为这个新的progresbar创建一个用户控件。
2)它将有一个名为NumberOfProgresses的属性,它与包含所述进程状态的数组绑定。
3)每个进度都将由一个Border项(或者更适合可视树的东西)表示,因为它是一个带有background属性的简单wpf控件。 background属性将被设置为nice看起来的进度样式,并且可以在样式中绑定进度颜色以表示border的borderbrush属性。可以轻松设置进度的颜色。
4)用户控件将有一个方法UpdateProgress,它将数组中的百分比值和进度索引作为参数。
5)随着进度的更新,您可以,只需计算边框的适当宽度(用户控制实际宽度*百分比),然后使用Z索引进行播放,使其显示在顶部/底部,或叠加边框如此,首先将进度设置为最小值,然后对于其余的进度,您必须减去先前的进度长度以获得相同的效果。
这样就没有透明度引起的伪像,也没有OnRender()...... 请注意,在WPF中,应该没有理由将OnRender与OnRender混淆,就像在WinForms中使用OnPaint一样。 只需通过代码设置元素以获得您想要的外观,并让WPF进行渲染;)
我可以想象这个用户控件存在一个问题。您必须向用户提供有关哪种颜色属于哪种进度的反馈。但这可能会让你回到原点,这意味着只显示多个进度条会更好/更简单。
不隶属于 StackOverflow