本文只介绍根据鼠标事件动态绘制矩形方法
zrender实现简易画板功能可绘制大部分常用图形在文章末尾可参考

像下图这样,可随心所欲绘制你想绘制的矩形:

完整代码:(有详细注释,有任何疑问欢迎留言)


<template><div class="zrender"><div id="zrender-canvas"></div></div>
</template><script>
import zrender from 'zrender'
export default {name: 'zrender',data() {return {zr: null,group: null,currentId: null}},created() {},mounted() {this.init()},methods: {init() {this.zr = zrender.init(document.getElementById('zrender-canvas'))this.group = new zrender.Group()this.zr.add(this.group)this.handleMouse()},handleMouse() {// 设置三个变量flag鼠标按下标志、起点坐标组、终点坐标组let flag = falselet startPos = nulllet endPos = null// 给画布添加鼠标事件this.zr.on('mousedown', e => {// 鼠标按下,获取按下的坐标点flag = truestartPos = [e.event.zrX, e.event.zrY]})this.zr.on('mousemove', e => {// 鼠标移动时if (!flag) return false// 在鼠标按下的情况下执行以下操作// 获取鼠标移动的坐标点endPos = [e.event.zrX, e.event.zrY]// group遍历所有子节点移除当前id对应的元素(此处可跳过先看下文)this.group.eachChild(el => {if (el.id === this.currentId) {this.group.remove(el)}})// 创建一个圆矩形let rect = new zrender.Rect({shape: {x: startPos[0], // 起点横坐标y: startPos[1], // 起点纵坐标width: endPos[0] - startPos[0], // 宽height: endPos[1] - startPos[1] // 高},style: {fill: 'transparent', // 填充颜色,默认#000stroke: '#000', // 描边颜色,默认nulllineWidth: 1 // 线宽, 默认1}})// 每一个new出来的实例都有一个自己的id,赋值给currentId// 确保鼠标移动过程中不停的new,同时再移除掉this.currentId = rect.id// 添加圆到group里this.group.add(rect)})this.zr.on('mouseup', e => {// 鼠标抬起的时候,把最后一次赋值的id清空掉,保证画布上可以留下鼠标事件中最后一个new的实例this.currentId = nullflag = false})}}
}
</script><style>
#zrender-canvas {height:700px;
}
</style>

如下图简易画板功能可绘制大部分漂亮的图形,可保存图片到本地

参考:https://gitlab.com/zhangcw66/draw_board
说明:画板功能并不严谨,可参考学习绘图,不建议实际使用

鼠标移动框选动态绘制图形,基于zrender相关推荐

  1. OpenCV-Python实战(番外篇)——OpenCV中利用鼠标事件动态绘制图形

    OpenCV-Python实战(番外篇)--OpenCV中利用鼠标事件动态绘制图形 使用鼠标事件动态绘制 动态绘制图形 动态绘制图形和文本 相关链接 使用鼠标事件动态绘制 我们已经在<OpenC ...

  2. esri-leaflet入门教程(5)- 动态绘制图形

    esri-leaflet入门教程(5)- 动态绘制图形 by 李远祥 在上一章节中已经说明了esr-leaflet是如何加载ArcGIS Server提供的各种服务,这些都是服务本身来决定的,API脚 ...

  3. Leaflet学习之路五——动态绘制图形(点、线、圆、多边形)

    leaflet动态绘制图形 动态绘点 动态绘线 动态绘多边形 动态绘制矩形 2020.3.16更新 更新日志: 2019.1.14:更新了绘制多边形时tmpline没有移除的问题 2019.1.15: ...

  4. css svg做动图,用svg动态绘制图形

    以此前对svg的了解,就是通过rect/circle/line--等绘制规则图形,或者利用path路径来绘制更复杂的图形.但是这种绘制是,当我们写好svg的xml文件嵌入html代码,页面载入的时候, ...

  5. 动态绘制图形的基本思路

    动态图形绘制的基本思路是,创建一个类继承View类(或者继承SurfaceView类).覆盖onCreate()方法,使用Canvas对象在界面上绘制不同的图形,使用invalidate()方法刷新界 ...

  6. python之cv2动态绘制图形

    本文部分参考了以下链接内容:https://blog.csdn.net/Vertira/article/details/123631185 代码如下: 说明:按下'c'键实现绘制圆功能:按下'r'键实 ...

  7. 屏幕上绘制图形——基于C语言绘制图形(点、线、矩形、圆)

    文章目录 一.点 二.线 二.矩形 二.圆 主要描述了,点.线.矩形.圆的图形绘制实现方法,供大家了解熟悉. 在调用时注意屏幕宽高的设置以及osd地址的修改. 宏定义 图形叠加地址:osd_addre ...

  8. 基于SVG的鼠标动态绘制矩形和动态放置图片

    web开发中经常会遇到需要在图片上或画布上使用鼠标动态绘制图形,或者用图形或者小图片标注位置的需求,这里选择使用svg来实现. 一.在html中添加svg标签,并在其中放置图片(做背景) <sv ...

  9. 基于Fixed定位的框选功能

    最近项目涉及到一个支持批量操作的小需求,交互上需要使用框选来触发.在查阅了一些资料后发现,网上的方案基本都是基于绝对定位布局的,此方案如果是针对全局(在body上)的框选,还是可用的.但是现实需求里几 ...

最新文章

  1. js正则验证身份证号是否正确
  2. 如何通过缓存来提升系统性能
  3. ansole终端链接linux,基于Linux系统的智能家居远程控制系统设计论文.doc
  4. mysql系统属性_mysql 显示表字段及mysql系统信息
  5. java数据结构期末复习_java数据结构复习02
  6. linux脚本编写思想,Linux脚本编写入门基础(三)
  7. python return的理解_python 浅析对return的理解
  8. Alyona and copybooks
  9. Android Sensor传感器系统架构初探
  10. 2013年思杰合作伙伴移动性解决方案巡展
  11. 多项式ln,exp学习小计
  12. 祥福别园GhostXP_SP3纯净自选版_2013.04[NTFS格式]
  13. 面经分享:网友问我,怎样才能在谷歌匹兹堡办公室里写代码?下篇
  14. 分享55个计数统计PHP源码,总有一款适合你
  15. hadoop2.x学习01
  16. 2023牛客寒假算法集训营3
  17. ADN FDN SDN
  18. 联想小新padpro12.6 #Q706F 解锁输入TWRP教程
  19. php 小偷,php 小偷程序实例
  20. php.net国内镜像及php源码下载[非常快]

热门文章

  1. Android Studio 在library中引用本地arr的办法
  2. canvas——绘制图片——动图制作
  3. Baidu Apollo代码解析之Planning的结构与调用流程(1)
  4. dns缓存、cnd缓存、浏览器缓存
  5. Python实现桌面宠物
  6. 天龙八部服务器列表文件,TLBB服务端目录文件作用
  7. 一转头如释重负,一瞬间心如刀绞
  8. 华为2013年存储市场战略分析
  9. vs运行网站设置起始页,取消起始页的方法
  10. h5上传图片html5,h5图片上传简易版(FileReader+FormData+ajax)