小程序开发-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
: 填充的颜色,默认颜色为black
CanvasContext.fill()
对当前路径中的内容进行填充。默认的填充色为黑色。
注意:如果当前路径没有闭合,fill() 方法会将起点和终点进行连接,然后填充。
fill() 填充的的路径是从 beginPath() 开始计算,但是不会将 fillRect() 包含进去。
CanvasContext.setStrokeStyle(color)
设置描边色
color
: 填充的颜色,默认颜色为black
CanvasContext.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 这里来说一说我们的理念,我们也学习小程序开发有一周多了,从 ...
随机推荐
- Python最好IDE:Pycharm使用小技巧总结,让你写代码更为舒适
- Linxu系统安装PHP详细教程
安装centos源 yum install epel-release –y 下载php安装压缩包 wget https://www.php.net/distributions/php-7.3.15.t ...
- ReentrantLock与synchronized 源码解析
一.概念及执行原理 在 JDK 1.5 之前共享对象的协调机制只有 synchronized 和 volatile,在 JDK 1.5 中增加了新的机制 ReentrantLock,该机制的诞生并 ...
- 2020-04-11:A系统联机同步调用B系统(A和B不是同一公司系统,不能用分布式事务),如何保证系统间数据准实时一致性(设计思路即可)?提醒:需要考虑调用超时、并发、幂等、反交易先到等问题
福哥答案2020-04-12: 可参考微信支付和支付宝支付.
- C#算法设计排序篇之05-归并排序(附带动画演示程序)
归并排序(Merge Sort) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/683 访问. 归并排序是建立在归并操作 ...
- three.js 制作机房(上)
three.js使用的人太少了,一个博文就几百个人看,之前发js基础哪怕是d3都会有几千的阅读量,看看以后考虑说一说d3了,哈哈.吐槽完毕回归正题.前几天郭先生看到网上有人开发了3D机房,正愁博客没什 ...
- 题解 poj 3304
题目描述 线段和直线判交板子题 分析题目,如果存在这一条直线,那么过这条直线作垂线,一定有一条垂线穿过所有线段,否则不存在.题目转化为寻找一条直线与所有线段有交点. 直线线段判交方法: 1.先判断线段 ...
- CSS动画实例:跳跃的字符
1.翻转的字符 在页面中放置一个类名为container的层作为容器,在该层中放置5个字符区域,HTML代码描述如下: <div class="container"> ...
- STL函数库的应用第四弹——全排列(+浅谈骗分策略)
因为基础算法快学完了,图论又太难(我太蒻了),想慢慢学. 所以暂时不写关于算法的博客了,但又因为更新博客的需要,会多写写关于STL的博客. (毕竟STL函数库还是很香的(手动滑稽)) 请出今天主角:S ...
- Mysql多条数据以一条展示和判断某字符是否在某字段
多条数据以一条数据展示:GROUP_CONCAT select GROUP_CONCAT(uuid) from user; 判断某字符是否存在某字段:INSTR select * from( sele ...