share-poster-webapp
v1.0.1
Published
Is just a tool, used to handle small canvas of the program
Downloads
1
Readme
技术文档
该文档现在支持:
- 文字 data-type ='text'
- 图片 data-type ='image'
- 圆角图片 data-type='radius-image'
- 背景图片 data-type='background-image'
使用文档:(示例可见/wxminiprogram/main/components/dialog/ConvertTextToPicture/index.js)
///建议宽高设置成
let query = this.createSelectorQuery();
if (!query) {
return;
}
query.select("#convert-to-picture-container").boundingClientRect();
query.exec((res) => {
if (res && res.length) {
const { width = 0, height = 0 } = res[0] || {};
}
});
// ***
// your logic
// ***
this.drawImage = new Wxml2Canvas({
width,
height,
obj: this,
borderRadius: 12,
element: "squareCanvas",
finish(coverImage) {
wx.hideLoading();
// 这里的this 指向内部
},
error() {},
});
this.drawImage.draw(
{
type: "wxml", //类型
class: ".draw_canvas", //需要转视图的class
limit: ".convert-to-picture-container", // 外层的box
x: 0,
y: 0,
},
this
);
wxml:
<view wx:elif="{{cardinfo && sid}}" class="share-topic-wrapper draw_share_canvas" style="background-image: url({{cover}})" data-type="background-image">
<view class="share-topic-container">
<view class="share-works-form">
<view class="share-works-form-label">
<text class="draw_share_canvas" data-type="text" data-text="作">作</text>
<text class="draw_share_canvas" data-type="text" data-text="者:">者:</text>
</view>
<view class="share-works-form-value">
<image class="share-works-form-value-img draw_share_canvas" data-type="image"
data-url="{{cardinfo.author.avatar}}" src="{{cardinfo.author.avatar}}"></image>
<text class="share-works-form-value-txt draw_share_canvas" data-type="text"
data-text="{{cardinfo.author.nickName}}"
data-lineClamp="{{1}}">{{cardinfo.author.nickName}}</text>
</view>
</view>
<view class="share-works-form">
<view class="share-works-form-label draw_share_canvas" data-type="text" data-text="资料大小:">
资料大小:
</view>
<view class="share-works-form-value share-works-form-value1 draw_share_canvas"
data-type="text"
data-lineClamp="{{1}}"
data-text="{{cardinfo.size}}">
{{cardinfo.size}}
</view>
</view>
<view class="share-works-form">
<view class="share-works-form-label draw_share_canvas">
<text class="draw_share_canvas" data-type="text" data-text="格">格</text>
<text class="draw_share_canvas" data-type="text" data-text="式:">式:</text>
</view>
<view class="share-works-form-value share-works-form-value1">
<image class="share-works-form-value-img draw_share_canvas" data-type="image"
data-url="{{cardinfo.img}}" src="{{cardinfo.img}}"></image>
<text class="share-works-form-value-txt draw_share_canvas"
data-type="text"
data-text="{{cardinfo.type}}">{{cardinfo.type}}</text>
</view>
</view>
<view class="share-works-tags" wx:if="{{cardinfo.tags && cardinfo.tags.length}}">
<view class="share-works-tags-item draw_share_canvas"
wx:for="{{cardinfo.tags}}"
wx:key="index"
data-type="text"
data-text="{{item}}"
data-maxwidth="{{320}}">
{{item}}
</view>
</view>
<view class="share-works-desc draw_share_canvas"
data-type="text"
data-text="{{cardinfo.description}}"
data-lineClamp="{{3}}"
wx:if="{{cardinfo.description}}">
{{cardinfo.description}}
</view>
</view>
</view>
技术方案
1、利用createSelectorQuery获取SelectorQuery对象
2、 NodesRef SelectorQuery.selectAll(string selector) 获取在当前页面下所有标记的选择器节点。获得NodesRef对象
3、 SelectorQuery NodesRef.fields(Object fields, NodesRef.FieldsCallback callback)获取节点的相关信息。需要获取的字段在fields中指定。返回值是 nodesRef
对应的selectorQuery。
4、 根据制定computedStyle的属性进行元素的排列 渲染。computed获取的属性
图片
1、 用法
| 属性 | 类型 | 是否必填 | 说明 | | --------- | ------ | -------- | ----------------- | | data-type | String | 是 | 'image',矩形图片 | | data-url | String | 是 | 图片链接 | | data-left | Number | 否 | 修正横坐标位置 | | data-top | Number | 否 | 修正纵坐标位置 |
2、 computed属性
| type | String | 是 | 'radius-image',声明为绘制圆形图片 | | ------------ | ------ | ---- | ------------------------------------------------------------ | | x | Number | 是 | 坐标x | | y | Number | 是 | 坐标y | | url | String | 是 | 图片链接,支持 http/https 及本地图片,域名需要在mp平台加入白名单 | | style | | | | | r | Number | 是 | 半径 | | border | String | 否 | 边框,需要严格遵循 '10px dashed #540821' 格式 | | boxShadow | String | 否 | 阴影,需要严格遵循 '10 20 20 rgba(0, 0, 0, 0.4)' 格式 | | dash | Array | 否 | 虚线边框的间距和偏移 | | borderRadius | String | 否 | 圆角 |
圆形图片
1、 用法
| 属性 | 类型 | 是否必填 | 说明 | | --------- | ------ | -------- | ------------------------ | | data-type | String | 是 | 'radius-image',圆形图片 | | data-url | String | 是 | 图片链接 | | data-left | Number | 否 | 修正横坐标位置 | | data-top | Number | 否 | 修正纵坐标位置 |
2、 computed属性
| type | String | 是 | 'radius-image',声明为绘制圆形图片 | | ------------ | ------ | ---- | ------------------------------------------------------------ | | x | Number | 是 | 坐标x | | y | Number | 是 | 坐标y | | url | String | 是 | 图片链接,支持 http/https 及本地图片,域名需要在mp平台加入白名单 | | style | | | | | r | Number | 是 | 半径 | | border | String | 否 | 边框,需要严格遵循 '10px dashed #540821' 格式 | | boxShadow | String | 否 | 阴影,需要严格遵循 '10 20 20 rgba(0, 0, 0, 0.4)' 格式 | | dash | Array | 否 | 虚线边框的间距和偏移 | | borderRadius | String | 否 | 圆角 |
背景图片
| 属性 | 类型 | 是否必填 | 说明 | | --------- | ------ | -------- | ---------------------------- | | data-type | String | 是 | 'background-image',背景图片 | | data-left | Number | 否 | 修正横坐标位置 | | data-top | Number | 否 | 修正纵坐标位置 |
文本:
1、 用法
| 属性 | 类型 | 是否必填 | 说明 | | --------------- | ------ | -------- | ----------------------------------- | | data-type | String | 是 | 'text',文本 | | data-text | String | 是 | 文本内容 | | data-left | Number | 否 | 修正横坐标位置 | | data-top | Number | 否 | 修正纵坐标位置 | | data-padding | String | 否 | 内边距,与style叠加 | | data-background | String | 否 | 背景色 | | data-lineClamp | Numer | 否 | 文本显示几行 | | data-endSuffix | String | 否 | 与lineClamp同步使用,用于末尾省略号 | | data-maxwidth | Number | 否 | 绘制的边界 |
2、 computed属性
| 属性 | 类型 | 是否必填 | 说明 | | ------------ | ------ | -------- | ------------------------------------------------------------ | | type | String | 是 | 'text',声明为绘制文本 | | x | Number | 是 | 坐标x | | y | Number | 是 | 坐标y | | text | String | 否 | 文本内容 | | style | | | | | width | Number | 否 | 文本最大宽,超过则换行 | | height | Number | 否 | 文本高度 | | color | String | 否 | 字体颜色 | | fontSize | Number | 否 | 字体大小,默认14 | | fontFamily | String | 否 | 字体样式 | | lineHeight | Number | 否 | 字体行高,默认14 * 1.2 | | fontWeight | String | 否 | 字体粗细,默认normal | | lineClamp | Number | 否 | 文字的最大行数,超出则用 ... 截取 | | whiteSpace | String | 否 | 是否换行,默认wrap,如果传入nowrap,则不换行 | | textAlign | String | 否 | 文本的水平对齐方式,默认left | | border | String | 否 | 边框,需要严格遵循 '10px dashed #540821' 格式 | | background | String | 否 | 字体背景色 | | boxShadow | String | 否 | 阴影,需要严格遵循 '10 20 20 rgba(0, 0, 0, 0.4)' 格式 | | dash | Array | 否 | 虚线边框的间距和偏移 | | padding | String | 否 | 内边距,'10 10 10 10', 与css有区别,依次为左、上、右、下,可以不带单位 | | borderRadius | String | 否 | 圆角 |
矩形:
1、 用法
| 属性 | 类型 | 是否必填 | 说明 | | --------- | ------ | -------- | ------------ | | data-type | String | 是 | 'rect',文本 |
2、computed属性
| x | Number | 是 | 坐标x | | --------- | ---------------- | ---- | --------------------------------------------------------- | | y | Number | 是 | 坐标y | | style | | | | | width | Number | 是 | 宽 | | height | Number | 是 | 高 | | fill | String 或 Object | 否 | 填充颜色,支持渐变色 | | border | String | 否 | 边框,需要严格遵循 '10px dashed #540821' 格式 | | boxShadow | String | 否 | 阴影,需要严格遵循 '10 20 20 rgba(0, 0, 0, 0.4)' 格式 | | dash | Array | 否 | 虚线边框的间距和偏移 |
以上所有元素都能根据data-delay 属性来控制先后绘制的顺序