当前位置: 首页 > news >正文

小程序 wxml2canvas开发文档

 

wxml:

<view class="share__canvas share__canvas1"><view class="share__canvas1-text draw_canvas" data-type="text" data-text="这是一段无边距文字">这是一段无边距文字</view>
</view>
<canvas canvas-id="canvas1" class="share__canvas"></canvas>

js:

import Wxml2Canvas from 'wxml2canvas'; // 根据具体路径修改,node_modules会被忽略
Page({drawImage1 () {let self = this;this.drawImage1 = new Wxml2Canvas({width: 340, // 宽, 以iphone6为基准,传具体数值,其他机型自动适配height: 210, // 高element: 'canvas1', background: '#f0f0f0',progress (percent) {},finish(url) {let imgs = self.data.imgs;imgs.push(url);self.setData({imgs})},error (res) {}});let data = {list: [{type: 'wxml',class: '.share__canvas1 .draw_canvas', // draw_canvas指定待绘制的元素limit: '.share__canvas1', // 限定绘制元素的范围,取指定元素与它的相对位置x: 0,y: 0}]}this.drawImage1.draw(data);},
})

初始化属性

new Wxml2Canvas(options) 时传入的options属性如下:

属性名类型默认值是否必填说明
elementString''画布的id
widthNumber0画布的宽,以iphone6的375为基准,其他机型按比例自动设置实际宽度
heightNumber0画布的高,同上
destZoomNumber3输出的图片的像素密度,不建议传值,如果需要控制图片大小,可以适当减小
zoomNumber1画布整体缩放比例,不建议传值,会覆盖各种机型的适配
translateXNumber0画布整体横向位移
translateYNumber0画布整体纵向位移
heightNumberheight * 2输出的图片的高度
backgroundString#ffffff画布的整体背景色
gradientBackgroundObjectnull画布整体的渐变背景色
finishFunctionnull绘制成功后回调函数, 返回值url,绘制图片的本地路径
progressFunctionnull绘制进度,返回值percent,0-100
errorFunctionnull绘制失败后回调函数,返回值object,包含具体原因

绘制失败的原因如下:

错误码原因说明
errcodeerrmsge
1000save canvas error保存图片失败
1001download pic error预下载图片失败
1002drawRect error绘制矩形失败
1003drawImage error绘制图片失败
1004drawText error绘制文本失败
1005drawCircle error绘制圆形图片失败
1006drawCircleImage error绘制圆形失败
1007drawLine error绘制线条失败
1008drawWxml error绘制Wxml失败
1009drawWxml preLoadImage error预下载Wxml图片失败

 

数据配置方式支持的格式

代码示例:

let data = {list: [{type: 'rect',x: 10,y: 10,style: {width: 150,height: 80,fill: '#3762ab',border: '10px solid #aaaaaa',}}
}

上述是一个矩形的创建方式,可看代码里的示例。下面是支持的属性:

矩形

属性类型是否必填说明
typeString'rect',声明为绘制矩形
xNumber坐标x
yNumber坐标y
style
widthNumber
heightNumber
fillString 或 Object填充颜色,支持渐变色
borderString边框,需要严格遵循 '10px dashed #540821' 格式
boxShadowString阴影,需要严格遵循 '10 20 20 rgba(0, 0, 0, 0.4)' 格式
dashArray虚线边框的间距和偏移

圆形

属性类型是否必填说明
typeString'circle',声明为绘制圆形
xNumber坐标x
yNumber坐标y
style
rNumber半径
fillString 或 Object填充颜色,支持渐变色
borderString边框,需要严格遵循 '10px dashed #540821' 格式
boxShadowString阴影,需要严格遵循 '10 20 20 rgba(0, 0, 0, 0.4)' 格式
dashArray虚线边框的间距和偏移

线条

属性类型是否必填说明
typeString'line',声明为绘制线条
xNumber起始坐标x
yNumber起始坐标y
x2Number终止坐标x
y2Number终止坐标y
style
widthNumber线条宽度
strokeString 或 Object填充颜色,支持渐变色
boxShadowString阴影,需要严格遵循 '10 20 20 rgba(0, 0, 0, 0.4)' 格式
dashArray有此属性则绘制虚线,传入值为虚线边框的间距和偏移

图片

属性类型是否必填说明
typeString'image',声明为绘制图片
xNumber坐标x
yNumber坐标y
urlString图片链接,支持 http/https 及本地图片,域名需要在mp平台加入白名单
style
widthNumber
heightNumber
borderString边框,需要严格遵循 '10px dashed #540821' 格式
boxShadowString阴影,需要严格遵循 '10 20 20 rgba(0, 0, 0, 0.4)' 格式
dashArray虚线边框的间距和偏移

圆形图片

属性类型是否必填说明
typeString'radius-image',声明为绘制圆形图片
xNumber坐标x
yNumber坐标y
urlString图片链接,支持 http/https 及本地图片,域名需要在mp平台加入白名单
style
rNumber半径
borderString边框,需要严格遵循 '10px dashed #540821' 格式
boxShadowString阴影,需要严格遵循 '10 20 20 rgba(0, 0, 0, 0.4)' 格式
dashArray虚线边框的间距和偏移

文本

属性类型是否必填说明
typeString'text',声明为绘制文本
xNumber坐标x
yNumber坐标y
textString文本内容
style
widthNumber文本最大宽,超过则换行
heightNumber文本高度
colorString字体颜色
fontSizeNumber字体大小,默认14
fontFamilyString字体样式
lineHeightNumber字体行高,默认14 * 1.2
fontWeightString字体粗细,默认normal
lineClampNumber文字的最大行数,超出则用 ... 截取
whiteSpaceString是否换行,默认wrap,如果传入nowrap,则不换行
textAlignString文本的水平对齐方式,默认left
borderString边框,需要严格遵循 '10px dashed #540821' 格式
backgroundString字体背景色
boxShadowString阴影,需要严格遵循 '10 20 20 rgba(0, 0, 0, 0.4)' 格式
dashArray虚线边框的间距和偏移
paddingString内边距,'10 10 10 10', 与css有区别,依次为左、上、右、下,可以不带单位

此外,上述所有的元素都可以增加 delay:true 属性,来实现延迟绘制。

wxml转换的方式

如上面的使用示例,声明type为wxml时,会查询绘制元素节点的样式并绘制。下表是对应属性:

属性类型是否必填说明
typeString'wxml',声明转换wxml
xNumber坐标x,用于修正位置
yNumber坐标y,用于修正位置
classString待查询绘制的节点类名,会查询所有相同的类名
limitString限定节点的外围容器,在取坐标时,取与它的相对位置

 


 目前支持的wxml类型如下,需要声明在节点上:

图片

属性类型是否必填说明
data-typeString'image',矩形图片
data-urlString图片链接
data-leftNumber修正横坐标位置
data-topNumber修正纵坐标位置

圆形图片

属性类型是否必填说明
data-typeString'radius-image',圆形图片
data-urlString图片链接
data-leftNumber修正横坐标位置
data-topNumber修正纵坐标位置

背景图片

属性类型是否必填说明
data-typeString'background-image',背景图片
data-leftNumber修正横坐标位置
data-topNumber修正纵坐标位置

文本

属性类型是否必填说明
data-typeString'text',文本
data-textString文本内容
data-leftNumber修正横坐标位置
data-topNumber修正纵坐标位置
data-paddingString内边距,与style叠加
data-backgroundString背景色

行内文本

属性类型是否必填说明
data-typeString'inline-text',行内文本
data-textString文本内容
data-leftNumber修正横坐标位置
data-topNumber修正纵坐标位置
data-paddingString内边距,与style叠加
data-backgroundString背景色

行内图片

属性类型是否必填说明
data-typeString'inline-image',矩形图片
data-urlString图片链接
data-leftNumber修正横坐标位置
data-topNumber修正纵坐标位置

行内文本与图片有特殊处理逻辑,当top值相同时,按照从左到右顺序排列,可能会与展现有差异。

此外,上述所有的元素都可以增加 delay:Number 属性,来实现延迟绘制, number范围:1-100,间接实现层级控制。

http://www.lryc.cn/news/209439.html

相关文章:

  • SpringCloud微服务 【实用篇】| 认识微服务
  • Csdn文章编写参考案例
  • Jmeter性能测试:高并发分布式性能测试
  • 2015年亚太杯APMCM数学建模大赛B题城市公共交通服务水平动态评价模型求解全过程文档及程序
  • CCF CSP认证历年题目自练 Day40
  • 闲聊一下写技术博客的一些感想
  • 单片机为什么一直用C语言,不用其他编程语言?
  • 利用HTTP2,新型DDoS攻击峰值破纪录
  • android鼠标滚轮事件监听方法
  • 【C语言|关键字】C语言32个关键字详解(4)——其他(typedef、sizeof)
  • Hafnium简介和构建
  • 2023年香水行业数据分析:国人用香需求升级,高端香水高速增长
  • 这可能是最简单的Page Object库
  • 论文阅读——BERT
  • 竞赛 深度学习人体跌倒检测 -yolo 机器视觉 opencv python
  • Springboot创建多数据源
  • 【Hello Algorithm】滑动窗口内最大值最小值
  • HTML,CSS实现鼠标划过头像,头像突出变大(附源码)
  • “爱知道”,你知道吗?
  • 基于SpringBoot+Vue的服装销售系统
  • 针对多分类问题,使用深度学习--Keras进行微调提升性能
  • 一、【Photoshop如何根据不同类型图像抠图】
  • rust - 理解borrow trait
  • review-java-basis
  • Go 语言访问 Redis 笔记
  • 【MySQL数据库重点】第二节:MySQL基础知识(基本操作)
  • 计算机网络--第一次作业
  • 网络协议--TCP的成块数据流
  • 鼎鑫鸿鄴引入“能源互联网+”理念 打造共赢
  • Qt下实现支持多线程的单例模式