uniapp图片涂鸦插件(支持多种涂鸦方式,图片放大缩小)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

工程地址https://gitee.com/geshijia/ct-graffiti

ct-graffiti涂鸦组件使用说明

参考说明

参考链接:https://github.com/ylyuanlu/yl-graffiti 感谢作者的付出,给我提供了一些思路,并做了如下优化:

  • 增加图片放大缩小移动功能
  • 添加更多涂鸦图形的选择
  • 增加文字涂鸦功能 需要自己配置一个可用弹框输入文字后赋值给text(index文件384行)

组件引用方式

easycom方式引用

将yl-graffiti组件放入根目录下的components中:

|--components
|    |--yl-graffiti
|        |-yl-graffiti.vue
|--pages
|--pages.json

然后在pages.json文件中添加easycom声明:

{"easycom": {"autoscan": true,"custom": {"^yl-(.*)": "@/components/yl-$1/yl-$1.vue"}},...
}

代码引用

同上,将yl-graffiti组件放入根目录下的components中或放在使用该组件页面对应的目录下,然后在页面中导入该组件:

<script>import ylGraffiti from "./components/yl-graffiti/yl-graffiti.vue";export default {components: {ylGraffiti},...}
</script>

示例代码

组件使用相关代码,详细代码请参考示例工程,下面贴出主要代码。

<view>...<yl-graffiti ref="graffiti" canvas-id="myCanvas" :width="canvasStyle.w" :height="canvasStyle.h":shape="curShape" :lineColor="lineColor" :lineWidth="lineSize" :bgImage="picture"@stepChanged="stepChanged" :text="text" :optIndex="optIndex"></yl-graffiti><!-- 涂鸦组件控制视图,省略 -->...
</view>
<script>// 涂鸦组件功能由页面来控制import ylGraffiti from "./components/yl-graffiti/yl-graffiti.vue";export default {components: {ylGraffiti},data() {return {text: '',//文字optIndex: 3,stepInfo: { // 用来控制撤销和重做curStep: -1,len: 0},saving: false}},...,methods: {...,/*** 当前位置变化* @param {Object} e*/stepChanged(e) {this.stepInfo = e;},/*** 选择涂鸦的类型* @param {Object} index*/selectWritingOption(index) {switch (index) {case 0:case 1:case 2:this.optIndex = index;break;case 3:this.optIndex = index;break;case 4:this.$refs.graffiti.repeal();break;case 5:this.$refs.graffiti.redo();break;case 6:this.$refs.graffiti.clearBoard();break;default:break;}},    /*** 保存涂鸦*/savePicture() {this.saving = true;this.$refs.graffiti.saveCanvas().then(res => {this.pictures[this.swiperCurrent].url = res;setTimeout(_ => this.saving = this.writing = false, 100);});}}}
</script>

组件接口

属性

参数说明类型默认值
canvasId画布IDstringMyCanvas
width画布宽度number300
height画布高度number225
shape画笔绘制图形形状stringcurve
lineColor画笔颜色string#091A22
lineWidth画笔宽度number5
bgColor背景颜色string
bgImage背景图片string
text文字涂鸦string文字文字
optIndex当前选择功能string、number3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/535867.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库基础理论知识

1.基本概念 数据(Data)&#xff1a;数据库存储的基本对象。数字、字符串、图形、图像、音频、视频等数据库(DB)&#xff1a;在计算机内&#xff0c;永久存储、有组织、可共享的数据集合数据库管理系统(DBMS)&#xff1a;管理数据库的系统软件数据库系统(DBS)&#xff1a;DBDBM…

数据结构:红黑树的模拟实现

目录 1、什么是红黑树&#xff1f; 2、红黑树的相关操作与实现 1、节点定义 2、查找操作 3、插入操作 1、cur为红&#xff0c;p为红&#xff0c;g为黑&#xff0c;cur存在且为红 2、cur为红&#xff0c;p为红&#xff0c;g为黑&#xff0c;u不存在/u存在且为黑 4、判断…

Prompt进阶3:LangGPT(构建高性能质量Prompt策略和技巧2)--稳定高质量文案生成器

Prompt进阶3:LangGPT(构建高性能质量Prompt策略和技巧2)–稳定高质量文案生成器 1.LangGPT介绍 现有 Prompt 创建方法有如下缺点&#xff1a; 缺乏系统性&#xff1a;大多是细碎的规则&#xff0c;技巧&#xff0c;严重依赖个人经验缺乏灵活性&#xff1a;对他人分享的优质 …

mysql基于mycat实现读写分离

试验环境 基于mysql主从复制已经实现 mycat主机192.168.199.149&#xff0c;安装好java和jdk 数据库主机192.168.199.150 数据库从机192.168.199.151 149配置 下载mycat并解压 vim /root/mycat/conf/server.xml vim /root/mycat/conf/schema.xml 150是主数据库&#xff0…

jenkins部署go应用 基于docker-compose

丢弃旧的的构建 github 拉取代码 指定go的编译版本 安装插件 拉取代码是排除指定的配置文件 比如 conf/config.yaml 文件 填写配置文件内容 比如测试环境一些主机信息 等 可以配置里面 构建的时候选择此文件替换开发提交的配置文件。。。。 编写docker-compose 文件 docker…

CountDownLatch介绍和使用

1. CountDownLatch是什么 CountDownLatch 是 Java.util.concurrent 包中的一个同步工具类&#xff0c;用于控制线程的执行顺序。它的主要作用是让一个或多个线程等待其他线程完成操作后再继续执行。 2. CountDownLatch 类常用方法 CountDownLatch(int count) 是 CountDownLa…

【C++ Boost库】原始计时器

文章目录 前言一、原始计时器1.1 timer定时器timer类的介绍异常安全代码概况 1.2 progress_timer类如何使用异常安全代码概况 1.3 progress_display类如何使用代码概况 总结 前言 在现代软件开发中&#xff0c;时间是一种不可逆转的资源。特别是在需要按时执行任务、调度事件或…

鸿蒙开发月薪过万,背后的秘密~

自从智联招聘公布出春节后首周的岗位需求数据后&#xff0c;鸿蒙开发岗位就被推上了热潮&#xff01;鸿蒙相关职位数同比增长163%&#xff0c;投递人数同比增长349%&#xff0c;即分别增至去年同期的2.6倍、4.5倍&#xff0c;涨势突出。 于是我的朋友圈中就有人去市场中简单探…

mybatisplus使用基本步骤

1.设计实体类&#xff0c;给实体类加一些需要的注解 2.创建Service接口继承mybatisplus提供的 IService<实体类>接口 3.实现Service接口&#xff0c;并继承mybatisplus提供的 ServiceImpl<mapper接口&#xff0c;实体类>类 4.mapper接口继承mybatisplus提供的 B…

程序人生——Java中基本类型使用建议

目录 引出Java中基本类型使用建议建议21&#xff1a;用偶判断&#xff0c;不用奇判断建议22&#xff1a;用整数类型处理货币建议23&#xff1a;不要让类型默默转换建议24&#xff1a;边界、边界、还是边界建议25&#xff1a;不要让四舍五入亏了一方 建议26&#xff1a;提防包装…

数据结构——通讯录项目

1.通讯录的介绍 顺序表是通讯录的底层结构。 通讯录是将顺序表的类型替换成结构体类型来储存用户数据&#xff0c;通过运用顺序表结构来实现的。 用户数据结构&#xff1a; typedef struct PersonInfo {char name[12];char sex[10];int age;char tel[11];char addr[100]; }…