IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 微信小程序—半圆(弧形)进度条 -> 正文阅读

[移动开发]微信小程序—半圆(弧形)进度条

效果图:
半圆(弧形)进度条

 <canvas class="canvas" style="width:{{canvasWidth}}px;height:{{canvasHeight}}px;" canvas-id="circleBar"></canvas>
  data: {
    canvasWidth: 213, // 画布宽度
    canvasHeight: 187, // 画布高度
    value:60 , // 当前得分
    total:100, // 总分值
  },
 
  // 初始化时调用即可
  showCanvasRing() {
      try {
        //作画
        var ctx = wx.createCanvasContext("circleBar", this); //canvas组建封装,需要后加个this
        ctx.clearRect(0, 0, this.data.canvasWidth, this.data.canvasHeight); // 清除画布

        var circle_r = this.data.canvasWidth / 2 - 10; //画布的一半,用来找中心点和半径
        var scoreText = this.data.value; // 当前得分
        var total = this.data.total;// 总分值

        var score = (100 * scoreText) / total; // 满分为100时对应的值
        let that = this;

        //定义起始点
        ctx.translate(this.data.canvasWidth / 2, this.data.canvasWidth / 2 + 5);
        //  白边圆弧
        ctx.beginPath();
        ctx.setStrokeStyle("#FFFFFF");
        ctx.setLineWidth(16);
        ctx.setLineCap("round");
        ctx.arc(0, 0, circle_r - 15, 1 * Math.PI, 0, false);
        ctx.stroke();
        ctx.closePath();

        //灰色圆弧
        ctx.beginPath();
        ctx.setStrokeStyle("#D6E4FF");
        ctx.setLineWidth(12);
        ctx.setLineCap("round"); //线条结束端点样式 butt 平直 round 圆形 square 正方形
        ctx.arc(0, 0, circle_r - 15, 1 * Math.PI, 0, false);
        ctx.stroke();
        ctx.closePath();

        // 蓝色圆弧
        ctx.beginPath();
        ctx.setStrokeStyle("#3366FF");
        ctx.setLineWidth(16);
        ctx.arc(
          0,
          0,
          circle_r - 15,
          1 * Math.PI,
          (score / 100 + 1) * Math.PI,
          false
        );
        ctx.stroke();
        ctx.closePath();
        // 指示器-外层
        let deg = 270 - score * 1.8;
        const xAxis = Math.sin(((2 * Math.PI) / 360) * deg) * (circle_r - 15);
        const yAxis = Math.cos(((2 * Math.PI) / 360) * deg) * (circle_r - 15);
        ctx.beginPath();
        ctx.arc(xAxis, yAxis, 11, 0, 2 * Math.PI);
        ctx.setFillStyle("#FFFFFF");
        ctx.fill();
        // 指示器-内层
        const xAxis2 = Math.sin(((2 * Math.PI) / 360) * deg) * (circle_r - 15);
        const yAxis2 = Math.cos(((2 * Math.PI) / 360) * deg) * (circle_r - 15); // circle_r - 10
        ctx.beginPath();
        ctx.arc(xAxis2, yAxis2, 6, 0, 2 * Math.PI);
        ctx.setFillStyle("#3366FF");
        ctx.fill();

        // 文字-总得分
        ctx.setTextAlign("center"); // 字体位置
        ctx.setFillStyle("#333333");
        ctx.font = "normal normal 16px Arial,sans-serif";
        ctx.fillText("总得分", 0, -30);
        // 文字-具体分数
        ctx.setTextAlign("center"); // 字体位置
        ctx.setFillStyle("#000000");
        ctx.font = "normal bold 36px Arial,sans-serif";
        ctx.fillText(scoreText, 0, 13);

        // 最低分
        ctx.setFillStyle("#666666");
        ctx.font = "normal normal 13px Arial,sans-serif";
        ctx.fillText(0, -circle_r + 10, 25);
        // 最高分
        ctx.setFillStyle("#666666");
        ctx.font = "normal normal 13px Arial,sans-serif";
        ctx.fillText(total, circle_r - 15, 25);
        
		// 绘图
        ctx.draw(false, function () {
          //将生成好的图片保存到本地
          wx.canvasToTempFilePath(
            {
              canvasId: "circleBar",
              success: function (res) {
                var tempFilePath = res.tempFilePath;
                that.setData({
                  loadImagePath: tempFilePath,
                });
              },
              fail: function (res) {},
            },
            that
          );
        });
      } catch (error) {
      }
  }, 
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:15:26  更:2022-05-08 08:15:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 0:28:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码