更新记录
1.1.0(2024-09-15)
下载此版本
兼容vue2
1.0.0(2024-07-20)
下载此版本
目前只支持文本,图片,矩形的绘制
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
app-vue |
× |
√ |
√ |
√ |
√ |
√ |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
鸿蒙元服务 |
√ |
√ |
√ |
√ |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
√ |
√ |
√ |
√ |
√ |
× |
× |
× |
× |
参数说明
model 参数说明
参数 |
说明 |
类型 |
width |
canvas 宽度 |
string |
height |
canvas 高度 |
string |
data |
canvas 内容 |
{}Array |
@changeImage |
获取 canvas 绘制后的图片 |
string |
$ref.XXX.getCanvas() |
开始绘制 canvas |
/ |
model.data 参数说明
参数 |
说明 |
类型 |
可选参数 |
type |
canvas 绘制的类型 |
string |
text:绘制文本;image: 绘制图片;fillRect:绘制矩形 |
width |
canvas 宽度 |
string |
/ |
height |
canvas 高度 |
string |
/ |
x |
canvas X 轴坐标 |
number |
/ |
y |
canvas Y 轴坐标 |
number |
/ |
url |
url 地址(type=image 时有效) |
string |
/ |
text |
文本,可以是多文本,会自动换行(type=text 时有效) |
string |
/ |
textAlign |
文本对其方式(type=text 时有效) |
string |
left:左对齐,center:居中,right:右对齐 |
fontsize |
文本字体大小,单位是 px(type=text 时有效) |
number |
/ |
color |
文本颜色(type=text 时有效) |
number |
/ |
background |
矩形的颜色(type=fillRect 时有效) |
number |
/ |
使用方法
方法一 (示例vue2)
<template>
<view class="content">
<FCanvas
ref="CanvasImgref"
@changeImage="changeImage"
:model="canvasMode"
/>
<img :src="img" alt="" />
</view>
</template>
<script>
// 用vue3的话就改成canvas-vue3.vue
import FCanvas from "@/components/fei-canvas/canvas-vue2.vue";
export default {
components: { FCanvas },
data() {
return {
canvasMode: {
width: 500, // canvas的宽
height: 500, // canvas的高
data: [], // canvas的内容
},
img: "",
};
},
onShow() {
// < !--设置canvas的内容 -->
this.getA();
},
methods: {
changeImage(e) {
console.log(e); // e:绘制完成的图片地址
this.img = e;
},
getA() {
this.canvasMode = {
width: 100,
height: 200,
data: [
// {
// type: 'image', // 绘制图片类型
// x: 0,
// y: 0,
// width: 616,
// height: 914,
// url: 'url地址' // 背景图
// },
{
type: "text", // 绘制文本类型
text: "标题名标题名标题名",
x: 0, // 如果对其方式是center,那么就是再308的位置开始居中展示
y: 0,
textAlign: "left", // 对其方式
fontsize: 50, // 字体大小
color: "#000",
},
{
type: "fillRect", // 矩形
background: "#000", // 矩形的颜色
x: 0,
y: 0,
width: 2,
height: 100,
},
],
};
setTimeout(() => {
// < !--延迟执行 -->
this.$refs.CanvasImgref.getCanvas();
}, 20);
},
},
};
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
</style>
方法二 (示例vue3)
<template>
<view class="content">
<FCanvas @changeImage="changeImage" :model="canvasMode">
<button>按钮,可以写任意样式,点击此处会直接绘制canvas</button>
</FCanvas>
<img :src="img" alt="" />
</view>
</template>
<script lang="ts">
// 用vue2的话就改成canvas-vue2.vue
import { ref, defineComponent } from "vue";
import FCanvas from "@/components/fei-canvas/canvas-vue3.vue";
export default defineComponent({
components: { FCanvas },
setup() {
return {
canvasMode: {
width: 500, // canvas的宽
height: 500, // canvas的高
data: [], // canvas的内容
},
img: "",
};
},
onShow() {
// < !--设置canvas的内容 -->
this.getA();
},
methods: {
changeImage(e) {
console.log(e); // e:绘制完成的图片地址
this.img = e;
},
getA() {
this.canvasMode = {
width: 100,
height: 200,
data: [
// {
// type: 'image', // 绘制图片类型
// x: 0,
// y: 0,
// width: 616,
// height: 914,
// url: 'url地址' // 背景图
// },
{
type: "text", // 绘制文本类型
text: "标题名标题名标题名",
x: 0, // 如果对其方式是center,那么就是再308的位置开始居中展示
y: 0,
textAlign: "left", // 对其方式
fontsize: 50, // 字体大小
color: "#000",
},
{
type: "fillRect", // 矩形
background: "#000", // 矩形的颜色
x: 0,
y: 0,
width: 2,
height: 100,
},
],
};
},
},
});
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
</style>