小程序canvas实现画布半圆环

本文实例为大家分享了小程序canvas实现画布半圆环的具体代码,供大家参考,具体内容如下

1、效果图:

2、wxml:

<view class="fragrance_item">
  <view class="fragPos">
    <view class="fragNum">{{perfumePercent}}%</view>
    <view class="fragText">香水余量</view>
  </view>
  <view class="fragPsoReset">
    <view bindtap="resetTab" class="fragReset" hover-class="fragModel_hover">
      <image class="fragReset_icon" src="/static/image/reset.png" mode="widthFix"> </image>
      <view>复位</view>
    </view>
  </view>
  <view class="fragRing">
    <canvas id="perfumeBalance" type="2d" style="width: 220px; height: 120px;" ></canvas>
  </view>
</view>

3、wxss:

.fragModel_hover{box-shadow: 0.2rem 0 0.3rem #8fd0e0, -0.2rem 0 0.3rem #58bfd1;}
.fragrance_item{position: relative;margin-left: 15px;margin-right: 15px;}
.fragPos{position: absolute;left: 50%; top: 50%;transform: translateX(-50%);text-align: center;}
.fragPos .fragNum{color:#32CD32;}
.fragPsoReset{position: absolute;right: 3px;top: 36px;text-align: center;}
.fragPsoReset .fragReset{display:inline-block;padding:8px 13px;background-color: rgba(50,80,80.68);border-radius: 15px;transition: all .3s ease-in;font-size: 12px;}
.fragPsoReset .fragReset_icon{width:22px;height:22px;}
.fragRing{width: 220px;height:120px;margin: auto;}

4、js:

let perfumeNum = 1.5;
Page({
  data: {
    perfumePercent: 0, // 香水余量
  },
 
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    let that = this;
    // 香水余量圆环
    const query = wx.createSelectorQuery()
    query.select('#perfumeBalance') .fields({ node: true, size: true }).exec((res) => {
      that.initRing(res);
    })
  },
  // b、香水余量
  initRing(res) {
    let that = this;
    const canvas = res[0].node
    const ctx = canvas.getContext('2d');
    const dpr = wx.getSystemInfoSync().pixelRatio // 设备像素比
    canvas.width = res[0].width * dpr
    canvas.height = res[0].height * dpr
    ctx.scale(dpr, dpr);
    var circleR = 220 / 2; // 画布的一半,用来找中心点和半径
    ctx.translate(0, 0);   // 定义起始点
    function draw() {
      ctx.clearRect(0, 0, canvas.width, canvas.height);
      // 取色圆环
      ctx.beginPath();
      ctx.strokeStyle = '#fff';//transparent
      ctx.lineWidth = 12;
      ctx.lineCap='round' // 设置圆环端点的形状
      ctx.arc(circleR, circleR-10, circleR - 35, Math.PI, 2 * Math.PI, false);
      ctx.stroke();
      ctx.closePath();
      console.log("香水余量")
      // 进度_香水余量
      ctx.beginPath(); // 起始一条路径,或重置当前路径
      ctx.lineWidth = 6;  // 线条宽度
      ctx.lineCap='round' // 线条的结束端点样式
      ctx.arc(circleR, circleR-10, circleR - 35, Math.PI,perfumeNum * Math.PI, false);
      ctx.strokeStyle = "#00CED1";//transparent
      ctx.stroke();
      canvas.requestAnimationFrame(draw);
    }
    draw();
  },
 
  // 复位
  resetTab(){
    let that = this;
    perfumeNum = 2; // 香水余量为100%
    that.setData({
      perfumePercent: 100,
    })
  },
})

当然,你弄一个定时器,让 perfumeNum 的值一直 在 0 ~ 2 的范围内循环递增或递减,这个圆环的进度条就动起来了!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • JavaScript canvas绘制动态圆环进度条

    本文实例为大家分享了JavaScript canvas绘制动态圆环进度条的具体代码,供大家参考,具体内容如下 由于使用的是vue开发,所以就展示一下绘制函数好了,上图是效果图 drawMain(drawing_elem, percent, forecolor, bgcolor) {             /*                 @drawing_elem: 绘制对象                 @percent:绘制圆环百分比, 范围[0, 100]            

  • JS实现生成会变大变小的圆环实例

    本文实例讲述了JS实现生成会变大变小的圆环.分享给大家供大家参考.具体如下: 这里使用javascript生成圆环,会变大变小,对于研究如何利用JavaScript生成动画效果,这是个很好的范例. 运行效果如下图所示: 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

  • 原生JS实现圆环拖拽效果

    最近用原生JS写一个环形的鼠标滑动效果,代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{margin:0;padding:0;} div{width:50px;height:50px;border-radius:50%;positio

  • javascript+html5实现绘制圆环的方法

    本文实例讲述了javascript+html5实现绘制圆环的方法.分享给大家供大家参考.具体如下: <!DOCTYPE html> <html> <head> <title> </title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> </head> <body> <fiel

  • 小程序canvas实现画布半圆环

    本文实例为大家分享了小程序canvas实现画布半圆环的具体代码,供大家参考,具体内容如下 1.效果图: 2.wxml: <view class="fragrance_item">   <view class="fragPos">     <view class="fragNum">{{perfumePercent}}%</view>     <view class="fragText

  • 微信小程序canvas写字板效果及实例

    微信小程序canvas写字板效果及实例 写字板效果:书写文字,画板重置,导出图片,导出图片前判断是否书写内容 app.json: 添加一个路由:"pages/canvas/canvas" { "pages":[ "pages/index/index", "pages/logs/logs", "pages/canvas/canvas" ], "window":{ "navigat

  • 微信小程序实现拍照画布指定区域生成图片

    最近写识别行驶证功能,点击拍照把指定区域截取,生成图片功能. 系统相机.该组件是原生组件,使用时请注意相关限制. 扫码二维码功能,需升级微信客户端至6.7.3. 微信小程序Camera相机地址 我们看下效果: 1.首先生成一个CanvasContext: /** * 生命周期函数--监听页面加载 */ onLoad: function(options) { requireJs.adaptionIphoneX(this); this.ctx = wx.createCameraContext() }

  • 微信小程序canvas绘制圆角base64图片的实现

    接口返回base64格式小程序二维码,以往的做法是需要再调一个接口去拿到jpg/png格式的图片.如果没有这个接口呢,是不是也可以?然而小程序canvas并不支持直接使用base64绘制,好在小程序的文件系统提供了方法,可以把base64经过进一步处理转成本地图片. 获取base64格式图片 getXcxQrcode() { wx.request({ url: app.globalData.globalUrl + "/get_wx_code", data: { token: app.g

  • 详解微信小程序canvas圆角矩形的绘制的方法

    微信小程序允许对普通元素通过 border-radius 的设置来进行圆角的绘制,但有时候在使用 canvas 绘图的时候,也需要圆角,例如需要将页面上某块区域导出为图片下载到本地的时候,常用的解决方法就是使用 canvas 将这块区域绘制出来,最后导出 canvas 即可,但是 canvas 没有直接提供圆角的绘制 api ,所以需要 曲线救国 圆角矩形与一般矩形的区别在于,前者的四个角都是圆弧,所以只需要将一般矩形的四个角切掉,换成圆弧即可,如下图就是一个一般矩形被切掉了四个角的样子: 很明

  • 微信小程序canvas实现签名功能

    在微信小程序项目中,开发模块涉及到手写签名功能,微信小程序canvas闪亮登场 前言 微信小程序canvas实现签名功能 核心内容简介: (1)签名实现,开始,移动,结束 (2)重写 (3)完成 (4)上传 一.微信小程序canvas实现签名功能 效果演示: (1)签名实现 (2)重写 (3)完成 完成后将图片展示在相应的位置 (4)根据业务需求,可以将图片上传到后台,在需要的地方展示 二.上代码 1.全部演示 wxml <!--pages/canvas-test/canvas-test.wxm

  • 微信小程序 Canvas增强组件实例详解及源码分享

    WeZRender是一个微信小程序Canvas增强组件,基于HTML5 Canvas类库ZRender. 使用 WXML: <canvas style="width: 375px; height: 600px;" canvas-id="line-canvas-1">canvas> JS: var wezrender = require('../../lib/wezrender'); zr = wezrender.zrender.init("

  • 详解微信小程序-canvas绘制文字实现自动换行

    在使用微信小程序canvas绘制文字时,时常会遇到这样的问题:因为canvasContext.fillText参数为 我们只能设置文本的最大宽度,这就产生一定的了问题.如果我们绘制的文本长度不确定或者我们希望文本超出自动换行或者用省略号表示,光靠这个API是无法完成的.下面本人就讲下我在开发中是如何解决这个问题的. 1 wxml代码 <canvas canvas-id="myCanvas" style="border: 1px solid;"/> 2 w

  • 微信小程序canvas拖拽、截图组件功能

    先看下微信小程序canvas拖拽功能 组件地址 github.com/jasondu/wx-- readme近期补上 实现效果 如何实现 使用canvas 使用movable-view标签 由于movable-view无法实现旋转,所以选择使用canvas 需要解决的问题 如何将多个元素渲染到canvas上 如何知道手指在元素上.如果多个元素重叠如何知道哪个元素在最上层 如何实现拖拽元素 如何缩放.旋转.删除元素 看起来挺简单的嘛,就把上面这几个问题解决了,就可以实现功能了:接下来我们一一解决.

  • 微信小程序canvas分享海报功能

    微信小程序canvas分享海报,包含拒绝授权后重新打开授权设置. 这篇文章完善了第一次拒绝授权后再次点击可以打开授权设置,希望可以帮助到爱学习的道友 这里是效果图,图片可以百度上找. 话不多说,直接上代码 最重要的一点,千万不要忘记在json文件里面注册组件和wxml里面引用组件 wxml <button class='btn' catchtap='createPoster' >生成海报</button> <my-poster id="getPoster"

随机推荐