WPF圓形進度條

項目中使用了各類各樣進度條 此次主要記錄本身使用圓形的進度條心得html

以下圖:分別對應着 老版本、新版本、如今框架

 

12

    作東西以前 確定先網上找找看,一搜索一大堆鏈接,固然也有一些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屬性,也是改變鏈接處形狀,除了開始和結束。

   最後但願有相似需求的人,能幫助到你,若是當時要是先知道這些能省時間。人一輩子時間有限,寫代碼的時間更有限。

模擬以下圖:

相關文章
相關標籤/搜索