微信小程序canvas畫圓環(huán)形進(jìn)度條

最近做一個(gè)小程序般甲,有用到canvas畫圓環(huán)形進(jìn)度條阵苇,效果圖就是上圖了漠其。
為了方便日后使用蹲嚣,我已經(jīng)封裝了一個(gè)獨(dú)立的js文件诸老。
先簡(jiǎn)單說(shuō)一下實(shí)現(xiàn)流程岛请,封裝好的文件下載地址:https://github.com/SuperDalu/wxCanvas.git

先在wxml文件中創(chuàng)建畫布
<canvas canvas-id="runCanvas" id="runCanvas" class='canvas'></canvas>

在js文件中初始化畫布
const ctx2 = wx.createCanvasContext(id);

通過(guò)給canvas組件綁定boundingRect方法監(jiān)聽canvas容器的寬高
獲取到canvas容器的寬高的一半以確定圓心的位置
wx.createSelectorQuery().select('#'+id).boundingClientRect(function (rect) { //監(jiān)聽canvas的寬高
console.log(rect);
var w = parseInt(rect.width / 2); //獲取canvas寬的的一半
var h = parseInt(rect.height / 2); //獲取canvas高的一半压怠,
}).exec();

然后就可以開始畫圖掐场。
先把進(jìn)度條畫出來(lái)躯保,再去寫動(dòng)畫旋膳。
run(c, w, h) { //c是圓環(huán)進(jìn)度百分比 w,h是圓心的坐標(biāo)
let that = this;
var num = (2 * Math.PI / 100 * c) - 0.5 * Math.PI;
//圓環(huán)的繪制
ctx2.arc(w, h, w - 8, -0.5 * Math.PI, num); //繪制的動(dòng)作
ctx2.setStrokeStyle("#ff5000"); //圓環(huán)線條的顏色
ctx2.setLineWidth("16"); //圓環(huán)的粗細(xì)
ctx2.setLineCap("butt"); //圓環(huán)結(jié)束斷點(diǎn)的樣式 butt為平直邊緣 round為圓形線帽 square為正方形線帽
ctx2.stroke();
//開始繪制百分比數(shù)字
ctx2.beginPath();
ctx2.setFontSize(40); // 字體大小 注意不要加引號(hào)
ctx2.setFillStyle("#ff5000"); // 字體顏色
ctx2.setTextAlign("center"); // 字體位置
ctx2.setTextBaseline("middle"); // 字體對(duì)齊方式
ctx2.fillText(c + "%", w, h); // 文字內(nèi)容和文字坐標(biāo)
ctx2.draw();
},

實(shí)現(xiàn)動(dòng)畫效果途事。
實(shí)現(xiàn)動(dòng)畫效果其實(shí)使用定時(shí)器控制run方法一直執(zhí)行验懊。

canvasTap(start, end, time, w, h) { //傳入開始百分比和結(jié)束百分比的值擅羞,動(dòng)畫執(zhí)行的時(shí)間,還有圓心橫縱坐標(biāo)
var that = this;
start++;
if (start > end) {
return false;
}
that.run(start, w, h); //調(diào)用run方法
setTimeout(function () {
that.canvasTap(start, end, time, w, h);
}, time);
},

這就基本實(shí)現(xiàn)了圓環(huán)進(jìn)度條的繪制义图。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末减俏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子碱工,更是在濱河造成了極大的恐慌娃承,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怕篷,死亡現(xiàn)場(chǎng)離奇詭異历筝,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)廊谓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門梳猪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蹂析,你說(shuō)我怎么就攤上這事舔示。” “怎么了电抚?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵惕稻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我蝙叛,道長(zhǎng)俺祠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任借帘,我火速辦了婚禮蜘渣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肺然。我一直安慰自己蔫缸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布际起。 她就那樣靜靜地躺著拾碌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪街望。 梳的紋絲不亂的頭發(fā)上校翔,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音灾前,去河邊找鬼防症。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蔫敲。 我是一名探鬼主播饲嗽,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼燕偶!你這毒婦竟也來(lái)了喝噪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤指么,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后榴鼎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伯诬,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年巫财,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盗似。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡平项,死狀恐怖赫舒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情闽瓢,我是刑警寧澤接癌,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站扣讼,受9級(jí)特大地震影響缺猛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜椭符,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一荔燎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧销钝,春花似錦有咨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至纵装,卻和暖如春征讲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背橡娄。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工诗箍, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人挽唉。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓滤祖,卻偏偏與公主長(zhǎng)得像筷狼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匠童,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容