Canvas画布

基本使用方法:

  • 在wxml中添加canvas组件
<canvas canvas-id='canvasDemo' class='demo'></canvas>
// canvas-id:必须填写
  • 在对应js中执行绘画具体逻辑
// canvas.js
Page({
onReady() {
const query = wx.createSelectorQuery()
query.select('#canvasDemo')
.fields({ node: true, size: true })
.exec((res) => {
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) ctx.fillRect(0, 0, 100, 100)
})
}
})
WebGL 示

绘图方法

  1. CanvasContext.setFillStyle(color) 设置填充色

    color: 填充的颜色,默认颜色为black

  2. CanvasContext.fill() 对当前路径中的内容进行填充。默认的填充色为黑色。

注意:如果当前路径没有闭合,fill() 方法会将起点和终点进行连接,然后填充。

fill() 填充的的路径是从 beginPath() 开始计算,但是不会将 fillRect() 包含进去。

  1. CanvasContext.setStrokeStyle(color) 设置描边色

    color: 填充的颜色,默认颜色为black

  2. CanvasContext.stroke() 画出当前路径的边框。默认颜色色为黑色。

    stroke() 描绘的的路径是从 beginPath() 开始计算,但是不会将 strokeRect() 包含进去。

  3. CanvasContext.beginPath() 开始创建一个路径。需要调用 fill 或者 stroke 才会使用路径进行填充或描边

  • 在最开始的时候相当于调用了一次 beginPath。
  • 同一个路径内的多次 setFillStyle、setStrokeStyle、setLineWidth等设置,以最后一次设置为准。
  1. CanvasContext.closePath() 把路径移动到画布中的指定点,不创建线条。用 stroke 方法来画线条
  • x: 目标位置的 x 坐标
  • y: 目标位置的 y 坐标
  1. CanvasContext.moveTo(x, y) 把路径移动到画布中的指定点,不创建线条。用 stroke 方法来画线条
  • x: 目标位置的 x 坐标
  • y: 目标位置的 y 坐标
  1. CanvasContext.draw(reserve, callback) 将之前在绘图上下文中的描述(路径、变形、样式)画到 canvas 中。
  • reserve: 本次绘制是否接着上一次绘制。即 reserve 参数为 false,则在本次调用绘制之前 native 层会先清空画布再继续绘制;若 reserve 参数为 true,则保留当前画布上的内容,本次调用 drawCanvas 绘制的内容覆盖在上面,默认 false
  • callback: 绘制完成后执行的回调函数
  1. CanvasContext.rect(x, y, width, height) 创建一个矩形路径。需要用 fill或者 stroke 方法将矩形真正的画到 canvas 中
  • x: 矩形路径左上角的横坐标
  • y: 矩形路径左上角的纵坐标
  • width: 矩形路径的宽度
  • height: 矩形路径的高度
  1. CanvasContext.fillRect(x, y, width, height) 填充一个矩形。用 setFillStyle 设置矩形的填充色,如果没设置默认是黑色。
  • x: 矩形路径左上角的横坐标
  • y: 矩形路径左上角的纵坐标
  • width: 矩形路径的宽度
  • height: 矩形路径的高度
  1. CanvasContext.lineTo(x, y) 增加一个新点,然后创建一条从上次指定点到目标点的线。用 stroke 方法来画线条
  • x: 目标位置的 x 坐标
  • y: 目标位置的 y 坐标

小程序开发-Canvas画布组件的更多相关文章

  1. 微信小程序 在canvas画布上划动,页面禁止滑动

    要实现微信小程序 在canvas画布上划动,页面禁止滑动,不仅要设置disable-scroll="true",还要要给canvas绑定一个触摸事件才能生效. <canvas ...

  2. 微信小程序开发—快速掌握组件及API的方法

    微信小程序框架为开发者提供了一系列的组件和API接口. 组件主要完成小程序的视图部分,例如文字.图片显示.API主要完成逻辑功能,例如网络请求.数据存储.音视频播放控制,以及微信开放的微信登录.微信支 ...

  3. 微信小程序开发—快速掌握组件及API的方法---转载

    微信小程序框架为开发者提供了一系列的组件和API接口. 组件主要完成小程序的视图部分,例如文字.图片显示.API主要完成逻辑功能,例如网络请求.数据存储.音视频播放控制,以及微信开放的微信登录.微信支 ...

  4. 微信小程序开发05-日历组件的实现

    接上文:微信小程序开发04-打造自己的UI库 github地址:https://github.com/yexiaochai/wxdemo 我们这里继续实现我们的日历组件,这个日历组件稍微有点特殊,算是 ...

  5. 小程序开发-Map地图组件

    Map组件 是原生组件,使用时请注意相关限制.个性化地图能力可在小程序后台"设置-开发者工具-腾讯位置服务"申请开通. 设置subkey后,小程序内的地图组件均会使用该底图效果,底 ...

  6. 兼容小程序的canvas画图组件jmGraph

    基于CANVAS的简单画图组件让你用类似于dom的方式,在canvas上画图,感觉会不会很爽. 主页:http://graph.jm47.com/示例:http://graph.jm47.com/ex ...

  7. 手摸手教你微信小程序开发之自定义组件

    前言 相信大家在开发小程序时会遇到某个功能多次使用的情况,比如弹出框.这个时候大家首先想到的是组件化开发,就是把弹出框封装成一个组件,然后哪里使用哪里就调用,对,看来大家都是有思路的人,但是要怎样实现 ...

  8. 微信小程序开发之日期组件

    一: wxml: <view class="navbarlift" style="background:#ffffff;padding:20rpx"> ...

  9. 微信小程序开发06-一个业务页面的完成

    前言 接上文:微信小程序开发05-日历组件的实现 github地址:https://github.com/yexiaochai/wxdemo 这里来说一说我们的理念,我们也学习小程序开发有一周多了,从 ...

随机推荐

  1. Python 爬虫工程师必看,深入解读字体反爬虫

    字体反爬虫开篇概述 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人 ...

  2. jQuery 多库共存

    多库共存 问题概述         jQuery使用$作为标识符,随着jQuery的流行,其他js的库也会用$作为标识符,这样就会引起冲突         需要一个解决方案 让jQuery和其他的JS ...

  3. Java Redis系列2 (redis的安装与使用+redis持久化的实现))

    Java Redis系列2 (redis的安装与使用+redis持久化的实现) 什么是Redis? Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50 ...

  4. java 异常二

    一 捕获异常try…catch…finally 捕获:Java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理 捕获异常格式: try { //需要被检测的语句. } catch(异 ...

  5. pandas | 详解DataFrame中的apply与applymap方法

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是pandas数据处理专题的第5篇文章,我们来聊聊pandas的一些高级运算. 在上一篇文章当中,我们介绍了panads的一些计算方法, ...

  6. C#LeetCode刷题之#226-翻转二叉树(Invert Binary Tree)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4080 访问. 翻转一棵二叉树. 输入: 4    /   \   ...

  7. C#LeetCode刷题之#844-比较含退格的字符串​​​​​​​(Backspace String Compare)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4030 访问. 给定 S 和 T 两个字符串,当它们分别被输入到空 ...

  8. 通过http、https域名访问静态网页、nginx配置负载均衡(nginx配置)

    很多场景下需要可以通过浏览器访问静态网页,不想把服务器ip地址直接暴露出来,通过nginx可以解决这个问题. 实现http域名访问静态网页 1.域名解析配置(本文都是以阿里云为例,其他平台,操作步骤类 ...

  9. CSS动画实例:跳跃的字符

    1.翻转的字符 在页面中放置一个类名为container的层作为容器,在该层中放置5个字符区域,HTML代码描述如下: <div class="container"> ...

  10. Promise 方法

    functionB(){ this.functionA() } functionA(){ return new Promise((resolve, reject) => { this.$http ...