阅读 62

canvas_29 动画-圆形进度条

<template>
    <view class="zcvs">

        <view class="zcvs-item">
            <view>
                <canvas canvas-id="cvs" id="cvs" style="width: 400px; height: 400px;border: 1px solid #007AFF;" />
            view>
        view>

    view>
template>

<script>
    export default {
        data() {
            return {

            };
        },
        onReady() {
            this.drawCvs();
        },
        methods: {
            drawCvs() {
                const ctx = uni.createCanvasContext(cvs);

                // pi 将圆的周长划分为100份,rate为实际百分比,-25是圆的初始起点
                let [pi, rate] = [Math.PI * 2 / 100, -25];

                let gradient = ctx.createLinearGradient(200, 0, 200, 400);
                gradient.addColorStop(0, "#11ffe4");
                gradient.addColorStop(0.5, "#03c6fd");
                gradient.addColorStop(1, "#ff5500");

                var draw = () => {
                    ctx.clearRect(0, 0, 400, 400);
                    ctx.shadowBlur = 0;
                    ctx.arc(200, 200, 150, 0, 2 * Math.PI, false);
                    ctx.stroke();

                    ctx.beginPath();
                    ctx.fillText(rate + 25 + "%", 200, 200);

                    ctx.beginPath();
                    ctx.setStrokeStyle(gradient);
                    ctx.shadowBlur = 15;
                    ctx.arc(200, 200, 150, pi * -25, pi * rate, false);
                    ctx.stroke();

                    ctx.draw();
                };

                var start = () => {
                    ctx.setFillStyle("#fff");
                    ctx.setStrokeStyle("#15222d");
                    ctx.shadowColor = #10fae7;
                    ctx.setLineCap("round");
                    ctx.setLineWidth(15);
                    ctx.font = "80px Lato";
                    ctx.setTextAlign("center");
                    ctx.setTextBaseline("middle");

                    if (rate < 75) {
                        rate++;
                        draw();
                        window.requestAnimationFrame(start);
                    }
                };

                start();
            },
        }
    }
script>

<style lang="scss" scoped>
    .zcvs {
        background-color: #0f1922;
    }
style>

 

原文:https://www.cnblogs.com/luwei0915/p/15306089.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐