关于微信小程序前端Canvas组件教程
关于微信小程序前端Canvas组件教程
微信小程序Canvas接口函数








上述为微信小程序Canvas的内部接口,通过熟练使用Canvas,即可画出较为美观的前端页面。下面是使用微信小程序画图的一些例子。
微信小程序画图实例
基本步骤
wxml中代码:
<canvas canvas-id="myCanvas" class="myCanvas" ></canvas>
js中onLoad()函数
const ctx = wx.createCanvasContext('myCanvas')//创建Canvas
ctx.setFillStyle('green')//选择填充颜色
ctx.fillRect(10, 10, 150, 75)//形状描述
ctx.draw()//绘制图像
路径的画法:
const ctx = wx.createCanvasContext('myCanvas')//创建Canvas
ctx.moveTo(10, 10)//初始点选择
ctx.lineTo(100, 10)//画线
ctx.lineTo(100, 100)
ctx.fill()//填充形状
ctx.draw()
文字的画法:
const ctx = wx.createCanvasContext('myCanvas')
ctx.setFontSize(20) //文字大小
ctx.fillText('Hello', 20, 20) //文字后跟的参数为文字启示坐标
ctx.fillText('MINA', 100, 100)
ctx.draw()
圆角矩形的画法
const bot = wx.createCanvasContext('bottcan')
bot.moveTo(0, 0)
bot.lineTo(wid / 2 - 15, 0)
bot.lineTo(wid / 2 + 15, 35)
bot.lineTo(10, 35)
bot.arc(0 + 10, 35 - 10, 10, Math.PI * 0.5, Math.PI)//勾画圆角矩形的线段
bot.setFillStyle('#FF9955')
bot.fill()
bot.setFillStyle('#414141')
bot.setFontSize(20)
bot.fillText('重填问卷', 50, 25)
按照手机比例画图方法
在生成Canvas的时候,需要固定宽度和高度,其中高度比较好固定,但是宽度的固定就比较困难,因为不同手机型号宽度不同,因此需要得知本机可使用宽度为多少。
<canvas canvas-id="myCanvas" class="myCanvas" style = "width:{{windowWidth}}px;height:35px" ></canvas>
var that = this;
wx.getSystemInfo({
success: function (res) {
console.log(res.windowWidth) //获取用户手机宽度
that.setData
({
windowWidth: res.windowWidth * 0.94
})
}
})
var wid = this.data.windowWidth;
微信小程序层级问题
在微信小程序中,Canvas这种默认组件的层级为最高,因此在弹出确认与否的提示时,Canva会影响使用,用户无法点击确认或取消,只能点击Canvas按钮,因此需解决该问题。
解决方案
在点击出现选择框时,将Canvas隐藏,并且生成一张与原始画布相同的图片放在该位置,从而达到降低Canvas层级的效果。
js代码:
//radaarImg为导出的图片
var that = this
wx.canvasToTempFilePath({
width: that.data.windowWidth,
height: 35,
canvasId: 'myCanvas',
success: function (res) {
that.setData({ radarImg: res.tempFilePath });
}
});
wxml代码:
<view wx:if = "{{!can1}}">
<canvas canvas-id="myCanvas" class="myCanvas" style = "width:{{windowWidth}}px;height:35px" ></canvas>
</view>
<image wx:else src="{{radarImg}}" style="width: {{windowWidth}}px; height:35px;" />
效果展示:

关于微信小程序前端Canvas组件教程的更多相关文章
- 微信小程序,前端大梦想(六)
微信小程序,前端大梦想(六) 微信小程序之联合百度API实现定位 定位功能对于我们都不陌生,在移动端的应用中更是不可或缺的功能,小程序中也提供了对应的API帮助我们完成定位的实现,但是目前小程序的定位 ...
- 微信小程序前端页面书写
微信小程序前端页面书写 WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件.事件系统,可以构建出页面的结构. 一.数据绑定 1. 普通写法 <view ...
- 微信小程序前端样式WXSS书写
微信小程序前端样式WXSS书写 一. WXSS的简单介绍 WXSS(WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式. 与 CSS 相比,WXSS 扩展的特性有: ...
- 微信小程序开发语音识别文字教程
微信小程序开发语音识别文字教程 现在后台 添加插件 微信同声传译 然后app.json 加入插件 "plugins": { "WechatSI": { &quo ...
- 完整微信小程序授权登录页面教程
完整微信小程序授权登录页面教程 1.前言 微信官方对getUserInfo接口做了修改,授权窗口无法直接弹出,而取而代之是需要创建一个button,将其open-type属性绑定getUseInfo方 ...
- 微信小程序内置组件web-view的缓存问题探讨
前言:博客或者论坛上面,还有自习亲身经历,发现微信小程序的webview组件的页面缓存问题相当严重,对开发H5的小童鞋来说应该困扰了不少.很多小童鞋硬是抓破脑袋也没有办法解决这个问题,那我们今天就来探 ...
- 微信小程序引入ECharts组件
首先打开ECharts网页 https://echarts.apache.org/zh/tutorial.html#%E5%9C%A8%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8 ...
- hello-weapp 微信小程序最简示例教程
打开微信小程序官方开发文档,最好全篇看一遍,基本上就会了. 点击文档中 工具 选项卡中 下载工具页面 下载对应系统版本的微信开发者工具 注意:脱离微信开发者工具是不能调试的 好了,安装下工具即可打开, ...
- 微信小程序之swiper组件高度自适应
微信小程序之swiper组件高度自适应 要求: (顶部广告栏 ) 改变swiper组件的固定高度,使之随内部每张图片的高度做自适应 原理: 图片加载完之后,获取图片的原始宽高,根据宽高比,计算出适应后 ...
随机推荐
- [转] Nginx配置中的location、root、alias
Nginx配置中的location.root.alias location & root 初始配置 [root@adailinux vhost]# cat rio.conf server { ...
- .NET设计模式-观察者模式
Observer(观察者模式) 定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新. 说白了就是事件. using System; namespa ...
- winform加快窗体加载速度
//加快控件加载的速度 protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams ...
- Asp.net MVC企业级开发(01)---Autofac
1.1 控制反转 在面向对象设计的软件系统中,它的底层都是由N个对象构成的,各个对象之间通过相互合作,最终实现系统的业务逻辑.同时,对象之间的耦合关系是无法避免的,也是必要的,这是协同工作的基础.但是 ...
- c#在sqlserver中使用EF框架
vs2017,sqlserver2017(localdb)调试通过.在sqlserver中创建数据库d1,表t1如下: 录入数据如下: 在vs新建任意项目,此处以控制台为例.添加数据模型Model1: ...
- mangodb之save与insert区别
save:未指定 _id 参数 插入成功,自动生成_id指定 _id 但 _id 对应的记录不存在 插入成功,_id不变指定 _id 但 _id 对应的记录存在 根据_id,更新记录 insert: ...
- 由于找不到mingwm10.dll 由于找不到QtCore4.dll
出现如下错误: 由于找不到mingwm10.dll 由于找不到QtCore4.dll 解决办法 将qt库加入环境变量
- elasticsearch regexp查询特殊字符处理
regexp表面意思就是正则查询,但是如果遇到,查询条件中包含特殊的字符串, 就会发现,需要进行相应的转义处理 需要处理Lucene regexps即可: /** * 转义字符串中的特殊字符 * 仅过 ...
- day 68 作业
''' 有以下成绩单数据 scores = [ { name: 'Bob', math: 97, chinese: 89, english: 67 }, { name: 'Tom', math: 67 ...
- 迁移生产环境的GItLab11.3.5到新的服务器
在新的服务器上 rpm安装git 首先停止,Gitlab服务 root@localhost # gitlab-ctl stop 参考了 以下链接: https://blog.csdn.net/liul ...