uniapp小程序使用canvas画圆

news2024/9/20 5:24:10
<view class="container">
    <canvas canvas-id="arcCanvas" id="arcCanvas" class="arc-canvas"                                     
            width="300" height="300">
    </canvas>
</view>

最开始我使用的uni.createSelectorQuery()来获取元素

onMounted(() => {
  const query = uni.createSelectorQuery();
  query.select('#progressCanvas').node().exec((res) => {
    if (res[0] && res[0].node) {
      const canvas = res[0].node;
      const context = canvas.getContext('2d');
      const percentage = 75;  // 进度百分比,可以调整
      drawProgressBar(context, percentage);
    } else {
      console.error('Canvas node not found');
    }
  });
});

网上找了很多都是用这种方法,但是我放到小程序中,不起作用。

于是就换成了uni.createCanvasContext('arcCanvas')方法获取

        const ctx = uni.createCanvasContext('arcCanvas');
		let canvas={width:250,height:250}
		// 外圈圆
		const outerRadius = 110;//半径
		const outerX = canvas.width / 2;//x轴
		const outerY = canvas.height / 2;//y轴
		ctx.beginPath();//开始画路径
		ctx.arc(outerX, outerY, outerRadius, 0, 2 * Math.PI);//画圆
		// 描边
		ctx.strokeStyle = 'white';//边框设置为白色
		ctx.stroke();//画出当前边框
		// 填充
		ctx.fillStyle='white';//填充为白色
		ctx.fill();//为当前圆填色
		
		 
		// 中间圆
		const middleRadius = 90;//半径
		const middleX = canvas.width / 2;//x轴
		const middleY = canvas.height / 2;//y轴
		ctx.beginPath();//开始画路径
		// 灰色
		ctx.arc(middleX, middleY, middleRadius, 1.5, 1.5 * Math.PI);//画圆
		// 设置边框宽
		ctx.lineWidth = 10;
		// 描边框
		ctx.strokeStyle = '#F5F5F7';
		ctx.stroke();
		// 蓝色填充实
		ctx.beginPath();
		ctx.arc(middleX, middleY, middleRadius, 1.5, 1.2 * Math.PI);
		ctx.lineWidth = 10;//设置边框宽度
		ctx.strokeStyle = '#00C3CE';
		ctx.stroke();
		  // 设置阴影的颜色
		 ctx.setShadow(0, 10, 10, '#E6F9FA');
		 ctx.stroke()
		// 保存状态,以便在中间圆内部绘制文字
		ctx.save();
		 
		// 内圈圆
		const innerRadius = 60;
		const innerX = canvas.width / 2;
		const innerY = canvas.height / 2;
		ctx.beginPath();
		ctx.arc(innerX, innerY, innerRadius, 0, 2 * Math.PI);
		ctx.lineWidth = 4;
		ctx.setShadow(0, 2,30, '#E6F9FA');
		ctx.stroke()
		ctx.strokeStyle = '#f3fafa';
		ctx.stroke();
		ctx.fillStyle = '#fff';
		ctx.fill();
		 
		// 在中间圆内居中加上文字
		const text = '80%';
		const text2 = '已修课程';
		ctx.font = 'bold 40px Arial';
		ctx.textAlign = 'center';
		ctx.fillStyle = 'black';
		ctx.fillText(text, innerX,  innerY+10); // 10是调整文字位置的偏移量,可以根据实际情况调整
		ctx.font = 'bold 14px Arial';
		ctx.fillText(text2, innerX, innerY + 30); // 10是调整文字位置的偏移量,可以根据实际情况调整
		// 恢复状态
		ctx.restore();
		ctx.draw()

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2148019.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【华为杯】第二十一届中国研究生数学建模竞赛

“华为杯”第二十一届中国研究生数学建模竞赛即将开始&#xff0c;梦想科研社给大家整理一些比赛信息&#xff0c;在正式开赛后&#xff0c;我们也会持续分享一些课题的分析以及代码&#xff0c;有需要的可以联系我们获取资料信息哦 一、时间节点 1.加密赛题开始下载时间&…

DPDK 简易应用开发之路 1:数据包接收与解析

本机环境为 Ubuntu20.04 &#xff0c;dpdk-stable-20.11.10 DPDK 应用基础 DPDK应用程序的一般处理流程如下&#xff1a; 初始化DPDK环境&#xff1a;调用rte_eal_init()初始化DPDK环境抽象层&#xff08;EAL&#xff09;&#xff0c;设置运行时环境和配置。 配置和绑定网卡…

2024最新版 Tuxera NTFS for Mac 2023绿色版图文安装教程

​ 在数字化时代&#xff0c;数据的存储和传输变得至关重要。Mac用户经常需要在Windows NTFS格式的移动硬盘上进行读写操作&#xff0c;然而&#xff0c;由于MacOS系统默认不支持NTFS的写操作&#xff0c;这就需要我们寻找一款高效的读写软件。Tuxera NTFS for Mac 2023便是其中…

超详图解 Apache HTTP Server(httpd)安装与验证

在OpenEuler 24.03系统中安装验证 Apache HTTP Server&#xff08;httpd&#xff09;的过程通常涉及以下步骤&#xff1a; 一、Apache HTTP Server&#xff08;httpd&#xff09;安装 1.检查是否已安装httpd: rpm -q httpd 2.更新系统包索引&#xff1a;更新您的系统包索引以…

基于深度学习的药品三期OCR字符识别

在药品生产线上,药品三期的喷码与条形码识别是保证药品追溯和安全管理的重要环节。传统的识别方法依赖于人工操作,不仅效率低下且容易出错。随着深度学习技术的不断发展,基于OCR(Optical Character Recognition,光学字符识别)的自动化识别系统逐渐成为主流。本文将以哪吒…

【Godot4.2】基于EasyTreeData解析的扩展Tree控件 - ETDTree

概述 基于EasyTreeData解析的扩展Tree控件。 EasyTreeData&#xff08;ETD&#xff09; EasyTreeData&#xff08;ETD&#xff09;是一种基于Tab缩进的简单层级结构数据&#xff0c;可以用于描述树形结构。能够被解析为Tree控件或表示树形结构的其他类或控件。 根目录 | 0节…

cadence SPB17.4 - allegro - 用板子外形创建整板铺铜

文章目录 cadence SPB17.4 - allegro - 用板子外形创建整板铺铜概述笔记先确定自己板子的 board Geometry/Design_Outline 是否有外形shape为了将软件提示看得更清楚&#xff0c;在每个操作之前&#xff0c;先将命令提示区内容先删了用Z-copy从外形层生成整板的铺铜备注END cad…

Maven 和 gradle JavaFX 项目的休眠行为差异

我一直在尝试将Hibernate与我的JavaFX Maven项目集成。它与Hibernate社区包、Jakarta和xerial配合得很好。我还将persistence.xml文件放在了src/main/resources/META-INF/persistence.xml。 我还尝试使用gradle创建另一个项目&#xff0c;并按照此maven项目的步骤操作&#xf…

《高等代数》行列式转置(应用)

说明&#xff1a;此文章用于本人复习巩固&#xff0c;如果也能帮助到大家那就更加有意义了。 注&#xff1a;1&#xff09;“行列式转置值不变”这一性质在求解行列式的过程中也有极大的作用。

代码随想录算法训练营第51天 | 岛屿数量、岛屿的最大面积

目录 岛屿数量 题目描述 输入描述 输出描述 输入示例 输出示例 提示信息 1. 深搜解法 2. 广搜解法 岛屿的最大面积 题目描述 输入描述 输出描述 输入示例 输出示例 提示信息 1. 深搜解法 2. 广搜解法 岛屿数量 题目描述 给定一个由 1&#xff08;陆地&…

Python和C++气候模型算法模型气候学模拟和统计学数据可视化及指标评估

&#x1f3af;要点 贝叶斯推理气候模型辐射对流及干湿能量平衡模型时间空间气象变化预测模型评估统计指标气象预测数据变换天气和气象变化长短期影响预估降低气候信息尺度评估算法气象行为模拟&#xff1a;碳循环、辐射强迫和温度响应温室气体排放碳循环温室诱导气候变化评估气…

影刀RPA实战:网页爬虫之苦瓜书籍数据

书籍常常被视为心灵的慰藉&#xff0c;因为它们能够在不同的层面上为人们提供支持和安慰。 1. 书籍对我们的重要性 书籍是人类知识的载体&#xff0c;也是智慧的结晶。它们不仅是学习的工具&#xff0c;更是人类心灵的慰藉。在忙碌的生活中&#xff0c;书籍能够提供知识、启发…

VMWare17.5.2中Windows7企业版安装VMWareTools失败及解决办法

一、问题产生环境 宿主机系统&#xff1a;Windows11专业版 x64 虚拟机版本&#xff1a;VMWare17.5.2 虚拟机系统&#xff1a;Windows 7企业版 x64&#xff08;sp1纯净版&#xff09; 二、问题表现现象 在Windows 7企业版系统安装完成后&#xff0c;点击虚拟机编辑&#xff0c;…

安科瑞智能塑壳断路器适用于物联网配电电网中-安科瑞黄安南

智能塑壳断路器是一款多功能、体积小、智能化的塑壳断路器&#xff0c;适用于物联网配电电网中。用于三相四线中性点直接接地的供电、用电系统&#xff0c;能全面采集功率、电能量、功率因数、谐波等用电参数;具有过载、短路、缺相、过压、欠压、剩余电流动作保护等功能&#x…

vscode 环境搭建

1. 插件离线安装 官网链接是&#xff1a;https://marketplace.visualstudio.com/vscode 下载需要的插件&#xff1a; vscode 离线安装 在打开的文件中选择扩展包&#xff0c;点击安装即可 2. 故障解决 参考&#xff1a;https://blog.csdn.net/weixin_63712639/article/det…

Modbus_RTU和Modbus库

目录 一.Modbus_RTU 1. 与Modbus TCP的区别 2. Modbus RTU特点 3. Modbus RTU协议格式 4. 报文详解 5. 代码实现RTU通信 1. 打开模拟的RTU从机 2. linux端使用代码实现和串口连接 2.1. 框架搭建 2.2 代码 二.Modbus库 1.库函数 一.Modbus_RTU 1. 与Modbus T…

el-form中三级动态添加数据

el-form中三级动态添加数据 data数据view按钮触发事件 data数据 submitForm: {id: undefined, //修改IDapp_id: undefined, //IP类型name: , //规则名称sort: undefined, //排序detail: [{keycode: 0,title_one: undefined, //一级标题desc_detail: [{keycode: 0,title_two: u…

vue之我不会 计算属性 vuex 路由 插槽

一、计算属性 例子&#xff1a; 注意&#xff1a;调用计算属性时&#xff0c;不可以带括号&#xff0c;那样调用的就是方法&#xff0c;如&#xff1a;以下调用fullName时不可funnName() <div id"root">姓&#xff1a;<input type"text" v-model&…

iotop 命令:磁盘IO监控和诊断

一、命令简介 ​iotop​命令用于监视磁盘I/O&#xff0c;实时显示每个进程或线程的读写速率等信息。非常适合用于诊断系统中的I/O瓶颈。 ‍ ​​ ‍ 安装 iotop 在大多数Linux发行版中&#xff0c;iotop​可能不是预装的。可以使用包管理器来安装它。 例如&#xff0c;在…

C#|.net core 基础 - 扩展数组添加删除性能最好的方法

今天在编码的时候遇到了一个问题&#xff0c;需要对数组变量添加新元素和删除元素&#xff0c;因为数组是固定大小的&#xff0c;因此对新增和删除并不友好&#xff0c;但有时候又会用到&#xff0c;因此想针对数组封装两个扩展方法&#xff1a;新增元素与删除元素&#xff0c;…