最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue使用canvas繪制圓環(huán)

 更新時(shí)間:2022年04月10日 15:22:53   作者:深圳最菜的前端  
這篇文章主要介紹了vue使用canvas繪制圓環(huán),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了vue使用canvas繪制圓環(huán)的具體代碼,供大家參考,具體內(nèi)容如下

很多時(shí)候,會(huì)有繪制圓環(huán)的要求,比如漸變,圓環(huán)等等

所以現(xiàn)在封裝了一個(gè)方法,可以直接繪制

繪制樣子大概這樣的

// html
<div class="medium-graph">
?? ?<canvas id="medium-graph-canvas" width="292" height="292" />
</div>
// js
mounted() {
?? ??? ?var medium_canvas = document.getElementById('medium-graph-canvas')
? ? ?? ?this.drawMain(medium_canvas, 60, 2, '#435377')
?? ?},
?? ?methods: {
?? ??? ?drawMain(drawing_elem, percent, colornums, bgcolor) {
?? ??? ??? ?/*
?? ??? ??? ??? ?@drawing_elem: 繪制對(duì)象
?? ??? ??? ??? ?@percent:繪制圓環(huán)百分比, 范圍[0, 100]
?? ??? ??? ??? ?@forecolor: 繪制圓環(huán)的前景色,顏色代碼
?? ??? ??? ??? ?@bgcolor: 繪制圓環(huán)的背景色,顏色代碼
?? ??? ??? ??? ?@colornums: 作為參數(shù)傳入,繪制哪個(gè)顏色
?? ??? ??? ?*/
?? ??? ??? ?var context = drawing_elem.getContext('2d')
?? ??? ??? ?var center_x = drawing_elem.width / 2
?? ??? ??? ?var center_y = drawing_elem.height / 2
?? ??? ??? ?var rad = (Math.PI * 2) / 100
?? ??? ??? ?var speed = 0

?? ??? ??? ?// 繪制背景圓圈
?? ??? ??? ?function backgroundCircle() {
?? ??? ??? ??? ?context.save()
?? ??? ??? ??? ?context.beginPath()
?? ??? ??? ??? ?context.lineWidth = 8 // 設(shè)置線寬
?? ??? ??? ??? ?var radius = center_x - context.lineWidth
?? ??? ??? ??? ?context.lineCap = 'round'
?? ??? ??? ??? ?context.strokeStyle = bgcolor
?? ??? ??? ??? ?context.arc(center_x, center_y, radius - 14, 0, Math.PI * 2, false)
?? ??? ??? ??? ?context.stroke()
?? ??? ??? ??? ?context.closePath()
?? ??? ??? ??? ?context.restore()
?? ??? ??? ?}

?? ??? ??? ?// 繪制運(yùn)動(dòng)圓環(huán)
?? ??? ??? ?function foregroundCircle(n) {
?? ??? ??? ??? ?context.save()
?? ??? ??? ??? ?// context.strokeStyle = forecolor //決定圓環(huán)顏色
?? ??? ??? ??? ?context.lineWidth = 22
?? ??? ??? ??? ?context.lineCap = 'round'
?? ??? ??? ??? ?var radius = center_x - context.lineWidth
?? ??? ??? ??? ?context.beginPath()
?? ??? ??? ??? ?// if (colornums == 1) {
?? ??? ??? ??? ?// ?? ?var g = context.createLinearGradient(0, 0, 180, 0) // 創(chuàng)建漸變對(duì)象 ?漸變開始點(diǎn)和漸變結(jié)束點(diǎn)
?? ??? ??? ??? ?// ?? ?g.addColorStop(0, '#64C58F') // 添加顏色點(diǎn)
?? ??? ??? ??? ?// ?? ?g.addColorStop(1, '#0084FF') // 添加顏色點(diǎn)
?? ??? ??? ??? ?// ?? ?context.strokeStyle = g // 使用漸變對(duì)象作為圓環(huán)的顏色
?? ??? ??? ??? ?// }
?? ??? ??? ??? ?if (colornums == 2) {
?? ??? ??? ??? ??? ?var g = context.createLinearGradient(0, 0, 180, 0)
?? ??? ??? ??? ??? ?g.addColorStop(0, '#E7954C')
?? ??? ??? ??? ??? ?g.addColorStop(1, '#D36638')
?? ??? ??? ??? ??? ?context.strokeStyle = g
?? ??? ??? ??? ?}
?? ??? ??? ??? ?// if (colornums == 3) {
?? ??? ??? ??? ?// ?? ?var g = context.createLinearGradient(0, 0, 180, 0)
?? ??? ??? ??? ?// ?? ?g.addColorStop(0, '#FF7C78') //
?? ??? ??? ??? ?// ?? ?g.addColorStop(1, '#FD413E')
?? ??? ??? ??? ?// ?? ?context.strokeStyle = g
?? ??? ??? ??? ?// }

?? ??? ??? ??? ?context.arc(
?? ??? ??? ??? ?center_x,
?? ??? ??? ??? ?center_y,
?? ??? ??? ??? ?radius,
?? ??? ??? ??? ?-Math.PI / 4,
?? ??? ??? ??? ?-Math.PI / 4 + n * rad,
?? ??? ??? ??? ?false
?? ??? ??? ??? ?) // 用于繪制圓弧context.arc(x坐標(biāo),y坐標(biāo),半徑,起始角度,終止角度,順時(shí)針/逆時(shí)針)
?? ??? ??? ??? ?context.stroke()
?? ??? ??? ??? ?context.closePath()
?? ??? ??? ??? ?context.restore()
?? ??? ??? ?}

?? ??? ??? ?// 繪制文字
?? ??? ??? ?function text(n) {
?? ??? ??? ??? ?// context.save() // save和restore可以保證樣式屬性只運(yùn)用于該段canvas元素
?? ??? ??? ??? ?// context.fillStyle = forecolor
?? ??? ??? ??? ?// var font_size = 40
?? ??? ??? ??? ?// context.font = font_size + 'px Helvetica'
?? ??? ??? ??? ?// var text_width = context.measureText(n.toFixed(0) + '%').width
?? ??? ??? ??? ?// context.fillText(n.toFixed(0) + '%', center_x - text_width / 2, center_y + font_size / 2)
?? ??? ??? ??? ?// context.restore()
?? ??? ??? ?}

?? ??? ??? ?// 執(zhí)行動(dòng)畫
?? ??? ??? ?(function drawFrame() {
?? ??? ??? ??? ?if (speed <= percent) {
?? ??? ??? ??? ??? ?window.requestAnimationFrame(drawFrame)
?? ??? ??? ??? ?} else {
?? ??? ??? ??? ??? ?return false
?? ??? ??? ??? ?}
?? ??? ??? ??? ?context.clearRect(0, 0, drawing_elem.width, drawing_elem.height)
?? ??? ??? ??? ?// backgroundCircle()
?? ??? ??? ??? ?// text(speed)
?? ??? ??? ??? ?foregroundCircle(speed)
?? ??? ??? ??? ?if (speed >= percent) {
?? ??? ??? ??? ??? ?speed ++
?? ??? ??? ??? ?} else {
?? ??? ??? ??? ??? ?speed += 1
?? ??? ??? ??? ?}
?? ??? ??? ?})()
?? ??? ?}
?? ?},

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 從vue源碼看props的用法

    從vue源碼看props的用法

    平時(shí)寫vue的時(shí)候知道 props 有很多種用法,今天我們來看看vue內(nèi)部是怎么處理 props 中那么多的用法的。非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2019-01-01
  • Vue3動(dòng)態(tài)路由(響應(yīng)式帶參數(shù)的路由)變更頁面不刷新的問題解決辦法

    Vue3動(dòng)態(tài)路由(響應(yīng)式帶參數(shù)的路由)變更頁面不刷新的問題解決辦法

    問題來源是因?yàn)槲业拈_源項(xiàng)目Maple-Boot項(xiàng)目的網(wǎng)站前端,因?yàn)轫?xiàng)目主打的內(nèi)容發(fā)布展示,所以其中的內(nèi)容列表頁會(huì)根據(jù)不同的菜單進(jìn)行渲染不同的路由,本文降介紹Vue3動(dòng)態(tài)路由變更頁面不刷新的問題解決辦法,需要的朋友可以參考下
    2024-07-07
  • vue.js購物車添加商品組件的方法

    vue.js購物車添加商品組件的方法

    這篇文章主要介紹了vue.js購物車添加商品組件的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • vue.js入門教程之綁定class和style樣式

    vue.js入門教程之綁定class和style樣式

    小編之前介紹了通過vue.js計(jì)算屬性,不知道大家都學(xué)會(huì)了嗎。那這篇文章中我們將一起學(xué)習(xí)vue.js實(shí)現(xiàn)綁定class和style樣式,有需要的朋友們可以參考借鑒。
    2016-09-09
  • 如何通過點(diǎn)擊按鈕切換顯示不同echarts圖表

    如何通過點(diǎn)擊按鈕切換顯示不同echarts圖表

    這篇文章主要介紹了如何通過點(diǎn)擊按鈕切換顯示不同echarts圖表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 解決vue頁面DOM操作不生效的問題

    解決vue頁面DOM操作不生效的問題

    下面小編就為大家分享一篇解決vue頁面DOM操作不生效的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Vue項(xiàng)目中安裝使用axios全過程

    Vue項(xiàng)目中安裝使用axios全過程

    這篇文章主要介紹了Vue項(xiàng)目中安裝使用axios全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • VUE寫一個(gè)簡單的表格實(shí)例

    VUE寫一個(gè)簡單的表格實(shí)例

    在本篇文章里小編給大家整理的是關(guān)于VUE中表格的寫法實(shí)例以及相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們可以參考下。
    2019-08-08
  • 解決VUE3 keep-alive頁面切換報(bào)錯(cuò)parentComponent.ctx.deactivate

    解決VUE3 keep-alive頁面切換報(bào)錯(cuò)parentComponent.ctx.deactivate

    這篇文章主要介紹了解決VUE3 keep-alive頁面切換報(bào)錯(cuò)parentComponent.ctx.deactivate is not a function的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue?展示.md文件的方法詳解

    Vue?展示.md文件的方法詳解

    這篇文章主要介紹了Vue?展示.md文件的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05

最新評(píng)論

宁德市| 临沭县| 万宁市| 龙口市| 塘沽区| 延津县| 沁阳市| 祥云县| 合川市| 牟定县| 伊宁县| 仙桃市| 南召县| 合山市| 霍山县| 永福县| 浦江县| 湘潭县| 荣昌县| 昭通市| 尉氏县| 通化市| 康乐县| 安塞县| 齐齐哈尔市| 灵川县| 浦江县| 云梦县| 竹山县| 景宁| 盐亭县| 淮北市| 屯昌县| 澄城县| 西青区| 萝北县| 靖江市| 荔浦县| 湖北省| 韶山市| 内乡县|