小程序开发-Canvas画布组件
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 示
绘图方法
CanvasContext.setFillStyle(color)设置填充色
color: 填充的颜色,默认颜色为blackCanvasContext.fill()对当前路径中的内容进行填充。默认的填充色为黑色。
注意:如果当前路径没有闭合,fill() 方法会将起点和终点进行连接,然后填充。
fill() 填充的的路径是从 beginPath() 开始计算,但是不会将 fillRect() 包含进去。
CanvasContext.setStrokeStyle(color)设置描边色
color: 填充的颜色,默认颜色为blackCanvasContext.stroke()画出当前路径的边框。默认颜色色为黑色。
stroke() 描绘的的路径是从 beginPath() 开始计算,但是不会将 strokeRect() 包含进去。CanvasContext.beginPath()开始创建一个路径。需要调用 fill 或者 stroke 才会使用路径进行填充或描边
- 在最开始的时候相当于调用了一次 beginPath。
- 同一个路径内的多次 setFillStyle、setStrokeStyle、setLineWidth等设置,以最后一次设置为准。
CanvasContext.closePath()把路径移动到画布中的指定点,不创建线条。用 stroke 方法来画线条
- x: 目标位置的 x 坐标
- y: 目标位置的 y 坐标
CanvasContext.moveTo(x, y)把路径移动到画布中的指定点,不创建线条。用 stroke 方法来画线条
- x: 目标位置的 x 坐标
- y: 目标位置的 y 坐标
CanvasContext.draw(reserve, callback)将之前在绘图上下文中的描述(路径、变形、样式)画到 canvas 中。
- reserve: 本次绘制是否接着上一次绘制。即 reserve 参数为 false,则在本次调用绘制之前 native 层会先清空画布再继续绘制;若 reserve 参数为 true,则保留当前画布上的内容,本次调用 drawCanvas 绘制的内容覆盖在上面,默认 false
- callback: 绘制完成后执行的回调函数
CanvasContext.rect(x, y, width, height)创建一个矩形路径。需要用 fill或者 stroke 方法将矩形真正的画到 canvas 中
- x: 矩形路径左上角的横坐标
- y: 矩形路径左上角的纵坐标
- width: 矩形路径的宽度
- height: 矩形路径的高度
CanvasContext.fillRect(x, y, width, height)填充一个矩形。用 setFillStyle 设置矩形的填充色,如果没设置默认是黑色。
- x: 矩形路径左上角的横坐标
- y: 矩形路径左上角的纵坐标
- width: 矩形路径的宽度
- height: 矩形路径的高度
CanvasContext.lineTo(x, y)增加一个新点,然后创建一条从上次指定点到目标点的线。用 stroke 方法来画线条
- x: 目标位置的 x 坐标
- y: 目标位置的 y 坐标
小程序开发-Canvas画布组件的更多相关文章
- 微信小程序 在canvas画布上划动,页面禁止滑动
要实现微信小程序 在canvas画布上划动,页面禁止滑动,不仅要设置disable-scroll="true",还要要给canvas绑定一个触摸事件才能生效. <canvas ...
- 微信小程序开发—快速掌握组件及API的方法
微信小程序框架为开发者提供了一系列的组件和API接口. 组件主要完成小程序的视图部分,例如文字.图片显示.API主要完成逻辑功能,例如网络请求.数据存储.音视频播放控制,以及微信开放的微信登录.微信支 ...
- 微信小程序开发—快速掌握组件及API的方法---转载
微信小程序框架为开发者提供了一系列的组件和API接口. 组件主要完成小程序的视图部分,例如文字.图片显示.API主要完成逻辑功能,例如网络请求.数据存储.音视频播放控制,以及微信开放的微信登录.微信支 ...
- 微信小程序开发05-日历组件的实现
接上文:微信小程序开发04-打造自己的UI库 github地址:https://github.com/yexiaochai/wxdemo 我们这里继续实现我们的日历组件,这个日历组件稍微有点特殊,算是 ...
- 小程序开发-Map地图组件
Map组件 是原生组件,使用时请注意相关限制.个性化地图能力可在小程序后台"设置-开发者工具-腾讯位置服务"申请开通. 设置subkey后,小程序内的地图组件均会使用该底图效果,底 ...
- 兼容小程序的canvas画图组件jmGraph
基于CANVAS的简单画图组件让你用类似于dom的方式,在canvas上画图,感觉会不会很爽. 主页:http://graph.jm47.com/示例:http://graph.jm47.com/ex ...
- 手摸手教你微信小程序开发之自定义组件
前言 相信大家在开发小程序时会遇到某个功能多次使用的情况,比如弹出框.这个时候大家首先想到的是组件化开发,就是把弹出框封装成一个组件,然后哪里使用哪里就调用,对,看来大家都是有思路的人,但是要怎样实现 ...
- 微信小程序开发之日期组件
一: wxml: <view class="navbarlift" style="background:#ffffff;padding:20rpx"> ...
- 微信小程序开发06-一个业务页面的完成
前言 接上文:微信小程序开发05-日历组件的实现 github地址:https://github.com/yexiaochai/wxdemo 这里来说一说我们的理念,我们也学习小程序开发有一周多了,从 ...
随机推荐
- 013_go语言中的函数多返回值
代码演示 package main import "fmt" func vals() (int, int) { return 3, 7 } func main() { a, b : ...
- Python 爬虫工程师必看,深入解读字体反爬虫
字体反爬虫开篇概述 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人 ...
- HIVE常用正则函数(like、rlike、regexp、regexp_replace、regexp_extract)
Oralce中regex_like和hive的regexp对应 LIKE 语法1: A LIKE B 语法2: LIKE(A, B) 操作类型: strings 返回类型: boolean或null ...
- 【av68676164(p21-p22)】线程
4.3.1 线程概念 线程的概念(Thread) 线程是可由CPU直接运行的实体 一个进程可以创建多个线程 多个线程可共享CPU可以实现并发运行 CreateThread() 功能:把一个函数创建为一 ...
- Spring IOC 剖析
模拟实现 Spring Ioc 控制反转功能 使用 => 原理 => 源码 => 模拟实现 使用:了解 原理:熟悉 源码 And 模拟实现: 精通 对照 Spring 功能点 Spr ...
- Codechef May Challenge 2020 Division 1 记录
目录 Triple Sort Sorting Vases Buying a New String Chef and Bitwise Product Binary Land Not a Real Wor ...
- java基础之字符串
以下内容摘自<java编程思想>第十三章. 1. 不可变 String String 对象是不可变对象,String 类中每一个看起来会修改 String 值的方法,实际上都是创建了一个全 ...
- C语言基础printf()和scanf()函数
在程序的运行中,我们经常会进行一些输入输出的操作,用来实现交互.为此, C语言便给出了 printf() 函数和 scanf() 函数用来实现输入和输出两个动作. 其中,printf()函数用于向控制 ...
- 用python爬取B站在线用户人数
最近在自学Python爬虫,所以想练一下手,用python来爬取B站在线人数,应该可以拿来小小分析一下 设计思路 首先查看网页源代码,找到相应的html,然后利用各种工具(BeautifulSoup或 ...
- elementUI 表单清空问题
在使用表单的清空方法时,我们需要注意几个问题: 1.我们需要为每个form-item加上prop属性,要不然无法清空(大部分的问题就是出在这) 2.resetFields()方法是重置表单,重置为默认 ...