首页 > 编程语言 >微信小程序解决不支持画布的createConicGradient

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

时间:2024-08-08 09:16:26浏览次数:10  
标签:canvas 微信 createConicGradient ctx 画布 描边 data Math

微信圆环进度条开发,先看效果

 

微信小程序中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].node canvas.width = 250 canvas.height = 250 const 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(); // 结束画布路径 } // 设置图片src image.src = '../../assets/image/icon/test2.png' }) }

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

所使用的图片

 

       

标签:canvas,微信,createConicGradient,ctx,画布,描边,data,Math
From: https://www.cnblogs.com/yangWanSheng/p/18348279

相关文章

  • Java基于微信小程序的无人值守自习室预约选座 系统 uniapp
    文末获取资源,收藏关注不迷路文章目录前言背景功能意义主要使用技术研究内容核心代码文章目录前言背景自习室系统,对于新起的这种服务系统来说,深受学生们的喜爱。由于无人值守自习室系统的实施,在目前是比较少的,以往对自习室的预定来说,一般都是到现场登记或电话预约,......
  • 【愚公系列】《微信小程序开发解析》016-位置API
    ......
  • 基于java+ssm+vue的自驾游拼团微信小程序
    ......
  • 记一次微信聊天记录导出工具的折腾
    目前的微信app(iOS端v8.0.46)聊天记录中,允许用户基于图片/视频进行筛选单个或者少量保存到本机没啥问题但是如果你量很大,不好意思,有批量操作功能,但是我不支持全选,因为我批量操作单次最多只支持9个文件就是玩儿!前提说明本文方法仅适用于iOS本次折腾实现的目......
  • python+flask计算机毕业设计微信小程序“班级小管家”(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的迅猛发展和移动互联网的普及,微信小程序作为一种轻量级的应用程序,凭借其无需下载、即用即走的特性,在教育领域展现出了巨大的......
  • 微信小程序-手机验证码短信登录接口(防薅方法)
    前言开发的小程序手机号短信验证码登录这一个功能,入参只有手机号。结局盗刷、恶意刷。解决方案1.nginx只允许referer是小程序来源的请求#你的接口location^~/api/{if($http_referer!~*"^https://servicewechat.com/【你的小程序appid】/\d+/page-fram......
  • 微信电脑版v3.9.11.17 防撤回版 多开版
    版本特色:1、看到对方撤回的消息2、多账号可正常登录修改原理,如下图:使用说明:解压后,双击start_Wechat.exe来运行软件下载地址:Wechat防撤回版v3.9解压密码:helloh下载时可能会有广告,忽略,等下载结束即可部分杀软会因该版本软件未购买签名证书(如下图)而阻止运行,可通过暂时......
  • Java计算机毕业设计个人博客微信小程序演示录像220239(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和智能手机的普及,个人博客作为一种重要的网络表达和信息分享方式,逐渐从传统的PC端向移动端延伸。微信小程序作为一种轻量级......
  • 毕业设计:基于微信小程序的校篮球联赛系统【代码+论文+PPT】
    全文内容包括:1、采用技术;2、系统功能;3、系统截图;4、配套内容。索取方式见文末微信号,欢迎关注收藏!一、采用技术语言:Java1.8框架:SpringBoot数据库:MySQL5.7、8.0开发工具:IntelliJIDEA旗舰版、微信开发工具其他:Maven3.8以上二、系统功能球队管理:负责添加、编辑、删除和查询......
  • uniapp 在微信H5、安卓、IOS预览PDF
    前言uniapp在微信内通过链接预览PDF,而现有uniapp插件都是通过在线网站解析例如:mumu-previewOffce但解析网站目前已经不能访问准备工作下载PDF.JShttps://github.com/mozilla/pdf.js/releases/download/v2.4.456/pdfjs-2.4.456-dist.zip放置在uniapp根目录static下并自......