• 小程序 wxml2canvas开发文档


     

    wxml:

    1. <view class="share__canvas share__canvas1">
    2. <view class="share__canvas1-text draw_canvas"
    3. data-type="text" data-text="这是一段无边距文字">
    4. 这是一段无边距文字
    5. view>
    6. view>
    7. <canvas canvas-id="canvas1" class="share__canvas">canvas>

    js:

    1. import Wxml2Canvas from 'wxml2canvas'; // 根据具体路径修改,node_modules会被忽略
    2. Page({
    3. drawImage1 () {
    4. let self = this;
    5. this.drawImage1 = new Wxml2Canvas({
    6. width: 340, // 宽, 以iphone6为基准,传具体数值,其他机型自动适配
    7. height: 210, // 高
    8. element: 'canvas1',
    9. background: '#f0f0f0',
    10. progress (percent) {
    11. },
    12. finish(url) {
    13. let imgs = self.data.imgs;
    14. imgs.push(url);
    15. self.setData({
    16. imgs
    17. })
    18. },
    19. error (res) {
    20. }
    21. });
    22. let data = {
    23. list: [{
    24. type: 'wxml',
    25. class: '.share__canvas1 .draw_canvas', // draw_canvas指定待绘制的元素
    26. limit: '.share__canvas1', // 限定绘制元素的范围,取指定元素与它的相对位置
    27. x: 0,
    28. y: 0
    29. }]
    30. }
    31. this.drawImage1.draw(data);
    32. },
    33. })

    初始化属性

    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图片失败

     

    数据配置方式支持的格式

    代码示例:

    1. let data = {
    2. list: [{
    3. type: 'rect',
    4. x: 10,
    5. y: 10,
    6. style: {
    7. width: 150,
    8. height: 80,
    9. fill: '#3762ab',
    10. border: '10px solid #aaaaaa',
    11. }
    12. }
    13. }

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

    矩形

    属性类型是否必填说明
    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,间接实现层级控制。

  • 相关阅读:
    charles安装使用
    常量字符串
    把地毯图片放在地板图片上,并去掉地毯两个角用地板填充
    python知网爬虫论文pdf下载+立即可用(动态爬虫)
    升级 Kubernetes 上的 TiDB 集群
    2—C++程序设计:C++简单程序设计
    个人练习-Leetcode-1034. Coloring A Border
    openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数
    建设数字经济引领型城市 CDEC2022中国数字智能生态大会广州举行
    Android学习笔记 22. 单位和尺寸
  • 原文地址:https://blog.csdn.net/yuan_jlj/article/details/134015215