基于 Taro 框架的微信小程序 canvas 绘图组件(基于的近义词)

网友投稿 1982 2022-10-08

基于 Taro 框架的微信小程序 canvas 绘图组件(基于的近义词)

基于 Taro 框架的微信小程序 canvas 绘图组件(基于的近义词)

taro-plugin-canvas

概述

taro-plugin-canvas 是基于 Taro 框架的微信小程序 canvas 绘图组件,封装了常用的操作,通过配置的方式生成分享图片

本组件是基于 wxa-plugin-canvas 的Taro封装版本

生成效果

组件原理说明

参见 wxa-plugin-canvas => https://juejin.im/post/5b7e48566fb9a01a1059543f

使用之前

使用 taro-plugin-canvas 前,请确保你已经学习过微信官方的 小程序简易教程 和 自定义组件介绍。

安装

通过 npm 安装 (推荐)

小程序已经支持使用 npm 安装第三方包,详见 npm 支持

# npmnpm i taro-plugin-canvas -S --production# yarnyarn add taro-plugin-canvas --production

使用组件

// 引入代码import { TaroCanvasDrawer } from '../../component/taro-plugin-canvas';// 在 render 方法中调用// 注意点 // config 绘图配置信息 - 必填项// onCreateSuccess 绘图成功回调 - 必须实现 => 接收绘制结果、重置 TaroCanvasDrawer 状态// onCreateFail 绘图失败回调 - 必须实现 => 接收绘制错误信息、重置 TaroCanvasDrawer 状态

方式二.-代码

直接通过 git - taro-plugin-canvas 源代码,并将src/component/taro-plugin-canvas目录拷贝到自己的项目的 src/component目录中

使用组件

// 引入代码 *引入方式和上面的方式一略有不同import TaroCanvasDrawer from '../../component/taro-plugin-canvas';// 在 render 方法中调用 和方式一一样

使用注意事项

图片的域名务必添加到downloadFile合法域名中(开发设置-服务器域名-downloadFile合法域名) 【P.s 开发时可 选中不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书】 【P.s 真机运行,可打开调试模式】

组件参数解释

config字段

字段类型必填描述
widthNumber(单位:rpx)画布宽度
heightNumber(单位:rpx)画布高度
backgroundColorString画布颜色
debugBooleanfalse隐藏canvas,true显示canvas,默认false
preloadBooleantrue:图片资源预- 默认false
hide-loadingBooleantrue:隐藏loading 默认false
blocksObject Array(对象数组)看下文
textsObject Array(对象数组)看下文
imagesObject Array(对象数组)看下文
linesObject Array(对象数组)看下文
pixelRatioNumber1为一般,值越大越清晰

blocks字段

字段名类型必填描述
xNumber(单位:rpx)块的坐标
yNumber(单位:rpx)块的坐标
widthNumber(单位:rpx)如果内部有文字,由文字宽度和内边距决定
heightNumber(单位:rpx)
paddingLeftNumber(单位:rpx)内左边距
paddingRightNumber(单位:rpx)内右边距
borderWidthNumber(单位:rpx)边框宽度
borderColorString边框颜色
backgroundColorString背景颜色
borderRadiusNumber(单位:rpx)圆角
textObject块里面可以填充文字,参考texts字段解释
zIndexInt层级,越大越高

texts字段

字段名类型必填描述
xNumber(单位:rpx)坐标
yNumber(单位:rpx)坐标
textString|Object当Object类型时,参数为text字段的参数,marginLeft、marginRight这两个字段可用(示例请看下文)
fontSizeNumber(单位:rpx)文字大小
colorString颜色
opacityInt1为不透明,0为透明
lineHeightNumber(单位:rpx)行高
lineNumInt根据宽度换行,最多的行数
widthNumber(单位:rpx)没有指定为画布宽度
marginLeftNumber(单位:rpx)当text字段为Object可以使用,用来控制多行文字间距
marginRightNumber(单位:rpx)当text字段为Object可以使用,用来控制多行文字间距
textDecorationString目前只支持 line-through(贯穿线),默认为none
baseLineStringtop| middle|bottom基线对齐方式
textAlignStringleft|center|right对齐方式
zIndexInt层级,越大越高
fontFamilyString小程序默认字体为'sans-serif', 请输入小程序支持的字体,例如:'STSong'
fontWeightString'bold'加粗字体,目前小程序不支持 100 - 900 加粗
fontStyleString'italic'倾斜字体

images字段

字段类型必填描述
xNumber(单位:rpx)右上角的坐标
yNumber(单位:rpx)右上角的坐标
urlString图片url(需要添加到-白名单域名中)也支持本地图片
widthNumber(单位:rpx)宽度(会根据图片的尺寸同比例缩放
heightNumber(单位:rpx)高度(会根据图片的尺寸同比例缩放
borderRadiusNumber(单位:rpx)圆角,跟css一样
borderWidthNumber(单位:rpx)边框宽度
borderColorString边框颜色
zIndexInt层级,越大越高

lines字段

字段类型必填描述
startXNumber(单位:rpx)起始坐标
startYNumber(单位:rpx)起始坐标
endXNumber(单位:rpx)终结坐标
endYNumber(单位:rpx)终结坐标
widthNumber(单位:rpx)线的宽度
colorString线的颜色
zIndexInt层级,越大越高

事件

success

成功回调 onCreateSuccess

返回生成海报图片的本地url,一般做法是使用wx.previewImage预览海报或者在指定位置预览,如下

// 绘制成功回调函数 (必须实现)=> 接收绘制结果、重置 TaroCanvasDrawer 状态 onCreateSuccess = (result) => { const { tempFilePath, errMsg } = result; Taro.hideLoading(); if (errMsg === 'canvasToTempFilePath:ok') { this.setState({ shareImage: tempFilePath, // 重置 TaroCanvasDrawer 状态 canvasStatus: false, config: null }) } else { // 重置 TaroCanvasDrawer 状态 this.setState({ canvasStatus: false, config: null }) Taro.showToast({ icon: 'none', title: errMsg || '出现错误' }); console.log(errMsg); } }

fail

错误回调 onCreateFail

// 绘制失败回调函数 (必须实现)=> 接收绘制错误信息、重置 TaroCanvasDrawer 状态 onCreateFail = (error) => { Taro.hideLoading(); // 重置 TaroCanvasDrawer 状态 this.setState({ canvasStatus: false, config: null }) console.log(error); }

Demo

以下是简易的Demo实现,也可以clone代码,里面有具体实现,线上案例见小程序 RssFeed

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:hibernate中数据库表多对一的映射
下一篇:Kafka中消息队列的两种模式讲解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~