微信小程序解决不支持画布的createConicGradient

news/2024/11/19 3:34:17/文章来源:https://www.cnblogs.com/yangWanSheng/p/18348279
微信圆环进度条开发,先看效果

 

微信小程序中canvas使用createConicGradient,开发者工具中显示正常,真机上报错,表示createConicGradient方法underfed,然后试一下使用图片放进去,发现微信小程序不支持new Image方法,后面查看微信官方文档有 createImage方法
wxml代码: 
<canvas canvas-id="myCanvasRound" id="myCanvasRound" type="2d" width="250" height="250" class="canvas-style"></canvas>

js代码:

setData() {this.setData({centerX: 250 / 2,centerY: 250 / 2,radius: 100, // 圆半径startAngle: -0.5 * Math.PI, // 开始角度endAngle: -0.5 * Math.PI, // 结束角度
    })
},
// 设置圆环进度,val 数字类型, 范围 0 - 100
setCircle(val) {
  let endAngleVal: number = (val - 25) / (5) * 0.1
  this.setData({
    endAngle: endAngleVal * Math.PI
  })

},drawCircle() {wx.createSelectorQuery().select(
'#myCanvasRound').fields({ node: true, size: true }).exec((res) => {const canvas = res[0].nodecanvas.width = 250canvas.height = 250const ctx = canvas.getContext('2d')ctx.clearRect(0, 0, canvas.width, canvas.height) // 清除画布ctx.moveTo(0, 0.5); // 使用0.5增量对齐像素,消除锯齿// 背景圆弧渲染 ctx.beginPath();ctx.arc(this.data.centerX, this.data.centerY, this.data.radius, 0, 2 * Math.PI);ctx.strokeStyle = '#a6a6a6'; // 设置描边颜色 ctx.lineWidth = 20; // 设置描边宽度 ctx.stroke(); // 描边路径,绘制环形进度条 // 进度条渲染 ctx.beginPath();ctx.lineWidth = 20; // 设置描边宽度 ctx.lineCap = 'round' // 线条类型// 图片对象const image = canvas.createImage()// 图片加载完成回调image.onload = () => {// 将图片绘制到 canvas 上const pattern = ctx.createPattern(image, "no-repeat");ctx.strokeStyle = pattern;ctx.arc(this.data.centerX, this.data.centerY, this.data.radius, this.data.startAngle + 0.09, this.data.endAngle, false);ctx.stroke(); // 描边路径,绘制环形进度条 // 滑动圆点 ctx.beginPath();let whitePoint = {x: this.data.centerX + this.data.radius * Math.cos(this.data.endAngle),y: this.data.centerY + this.data.radius * Math.sin(this.data.endAngle)};ctx.strokeStyle = '#FFF'ctx.lineCap = 'round';ctx.lineWidth = 5;ctx.arc(whitePoint.x, whitePoint.y, 6, 0, 2 * Math.PI); // 空心圆 ctx.stroke();ctx.closePath(); // 结束画布路径 }// 设置图片srcimage.src = '../../assets/image/icon/test2.png'})}

注意的是,所放入的图片大小需要和画布大小相符合,不然会出现图片偏移,渲染不全

所使用的图片

 

 
 
 
 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法】【线性表】【链表】LRU 缓存2

1 题目 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类:LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。 void put(int key, i…

介绍一款新奇的开源操作系统:GodoOS

在快节奏的现代办公环境中,一款高效、集成化的操作系统无疑是提升工作效率的利器。今天,我们要为您隆重介绍 ——GodoOS,一款专为内网办公环境设计的全能操作系统。它不仅仅是一个工具,更是您团队协作与文件管理的得力助手,将彻底改变您的工作方式,带来前所未有的便捷体验…

CORS跨域漏洞修复

原文链接: https://www.cnblogs.com/wenyoudo/p/14862701.html 漏洞介绍概述:CORS,跨域资源共享(Cross-origin resource sharing),是H5提供的一种机制,WEB应用程序可以通过在HTTP增加字段来告诉浏览器,哪些不同来源的服务器是有权访问本站资源的,当不同域的请求发生时,…

lg-dp1

记忆化搜索:记忆化压缩 DP 状态(一些期望 dp 里会用)剪枝递推:保证前面的部分已经计算了数位 dp 求 \([l,r]\) 之内满足某种限制的数的个数,该限制应该是与数位有关系的。 带不带前导0取决于是否对统计答案造成影响。 前缀和转化:只有上界补充题:如果 lim=1 的时候前面都…

《最新出炉》系列小成篇-Python+Playwright自动化测试-66 - 等待元素至指定状态(出现、移除、显示和隐藏)

1.简介 在我们日常工作中进行UI自动化测试时,保证测试的稳定性至关重要。其中一个关键方面是正确地定位和操作网页中的元素。在网页中,元素可能处于不同的状态,有些可能在页面加载完成之前不在DOM中,需要某些操作后才会出现,而其他元素可能一直存在于DOM中,但最初处于隐藏…

BACnet初学者教程,第三章:什么是 BACnet/IP 网络

第三章:什么是 BACnet/IP 网络平时调试BACnet协议,一个好用的 BACnet 调试工具和模拟器必不可少,推荐一款: 官网地址:https://www.redisant.cn/bacnetexplorerBACnet/IP 网络是一个或多个 IP 子网(IP 域)的集合,这些子网分配有单个 BACnet 网络号。BACnet 互联网络由两…

BACnet初学者教程,第四章:介绍 BACnet 虚拟链路层

第四章:介绍 BACnet 虚拟链路层平时调试BACnet协议,一个好用的 BACnet 调试工具和模拟器必不可少,推荐一款: 官网地址:https://www.redisant.cn/bacnetexplorer虚拟链路层 (VLL) 背后的基本概念是向现有的 BACnet 网络层呈现某些网络拓扑和功能的视图,利用新协议中内置的…

读零信任网络:在不可信网络中构建安全系统12源代码和构建系统

读零信任网络:在不可信网络中构建安全系统12源代码和构建系统1. 建立应用信任 1.1. 软件正在吞噬整个世界 1.2. 零信任网络需要关注应用程序的安全性,这似乎违反直觉,毕竟网络是不可信的,因此可以预见网络上存在不可信的应用 1.3. 运行在数据中心的软件堪称一切魔法之源,因…

雷达气象相关词汇(二 偏振参量)

参考自https://www.radartutorial.eu/15.weather/wr20.en.html 双偏振雷达 使用双偏振是区分冰雹和雨滴的一种方法。雷达发射和接收线性极化电磁波信号,并在水平和垂直偏振之间快速切换,在单个发射脉冲之间或在脉冲组之间交替。现代双偏振雷达通常同时传输两个偏振方向。示意…

第十章 自定义模块

10.1 导入模块 1.什么是python模块? ​ Python模块(Module),是一个Python文件,以.py结尾 模块可以定义函数,类和变量,模块里也能包含可执行的代码 2.模块的作用: ​ python中有很多各种不同的模块,每一个模块都可以帮助我们快速的实现一些功能 3.模块的导入方式: # 模块在使用…

雷达气象相关词汇(一 扫描模式)

参考自https://www.radartutorial.eu/15.weather/wr20.en.html https://en.wikipedia.org/wiki/Plan_position_indicator PPI(平面位置显示) A plan position indicator (PPI) is a type of radar display that represents the radar antenna in the center of the display, wi…

searchLights 动画

LOGO扫光效果.logo { width: 200px; height: 70px; display: flex; line-height: 70px; position: relative; overflow: hidden } .logo img { width: 100%; height: 70px } \3c p>.logo:before { } \3c br> @-webkit-keyframes searchLights { } \3c br> @-o-keyfram…