项目中使用了各类各样进度条 此次主要记录本身使用圆形的进度条心得html
以下图:分别对应着 老版本、新版本、如今框架
作东西以前 确定先网上找找看,一搜索一大堆链接,固然也有一些UI框架带这样的控件,我看了几个,各类类和样式继承类,主要是和他们本身框架结合一块儿。仅仅为了一个控件,那样作 简单问题复杂化。下面是单独介绍的一些有用连接..net
http://www.javashuo.com/article/p-ehxyeaxu-cn.htmlpwa
http://www.javashuo.com/article/p-pfeabpqk-cd.htmlcode
http://www.javashuo.com/article/p-pchsknvk-bv.htmlhtm
http://www.mamicode.com/info-detail-1272981.htmlblog
https://blog.csdn.net/u010875635/article/details/84197393继承
可是介于项目好多不能直接使用,由于有些功能不全,不能知足要求。 好比起点的位置,有人喜欢在顶部开始,而有的从左边开始,我还见过从右边开始的,有的顺时针,有的逆时针 ,因此得本身作些扩展。 ip
刚开始要实现这些功能以为挺费劲.get
一、圆环被分割了
二、圆环圆角开始和结束,给人感受要从新绘制
主要是当时不知道的太多,说一下难点处理方式,也是本篇文章重点至少对于我来讲是这样.
一、圆环被分割 主要是不清楚StrokeDashArray,这个属性其实不少地方用过不知道Path也有,常见的是虚边框矩形
新版中 只须要一个开始点和结束点就能够实现功能了,StrokeDashArray设置分割,StrokeThickness设置圆弧宽度
而不须要这样搞 http://www.javashuo.com/article/p-pchsknvk-bv.html
二、圆环圆角开始和结束这个问题 真耽误2 3小时, 新版中是画一个弧线, 而我要实现圆角,画四个弧线,也就须要知道4个点,
把以前的代码逻辑和思路全都换了,位置计算不许画的弧不圆滑,
另外进度100%的时候圆角开始和圆角结束重合,即Path有重合就透明了, 平时CombinedGeometry合并用的是2个,
而此次有四个路径 因而逐个属性查找 ,最终PathGeometry上设置FillRule = FillRule.Nonzero, 捣鼓很多时间功能是知足了 。
搞完以后以为有些知识本身仍是不太清楚,好比上面提到的合并以前是没有这样用过,因而就多了解一下Path,这一了解给我大惊一下, 明明一句代码搞定的事情,我花费3小时,在那改写代码,瞬间一万个后悔,为何不先看,为何不先看, 为何不先看!
这个鬼东西就是: StrokeStartLineCap="Round" 、StrokeEndLineCap="Round
设置这2个属性后,以前代码不用变化,因而把这2个属性也公开了,整个系统能够只用一个控件。
顺便提一下:StrokeLineJoin属性,也是改变链接处形状,除了开始和结束。
最后但愿有相似需求的人,能帮助到你,若是当时要是先知道这些能省时间。人一辈子时间有限,写代码的时间更有限。
模拟以下图: