网站首页 > 技术文章 正文
上一片文章讲解了Raphael基础及使用场景,头条连接:前端绘图利器-Raphael
大家估计会问,前天才写了文章,今天又发布连Demo都开发完了,我应该拿一个喇叭大喊:最近不加班!最近不加班!最近不加班![看]
今天这篇文章将介绍使用Raphael绘制流程图,现在前端使用JS进行流程图绘制的框架非常多(如果你需要了解绘制流程的框架可以留言,我偷偷告诉你或者留言我可以单独开模块介绍),这里不重点讲解其他框架。绘制流程图不是Raphael的强项,今天使用Raphael用作流程演示。
为什么说Raphael绘制流程图不是他的强项了?
作者观点:
1、 绘制流程图需要拖拽节点,Raphael需要依赖其他拖拽框架(Vue项目可以使用vuedraggable,js项目可以使用easyui-draggable)
2、 Raphael绘制的图形为svg对象,如果我们需要进行样式修改和其他操作比较困难,需要结合div层来使用,思路如下:分为两成,上层是div-dom布局层,下层为Raphael绘图层;如下示意图:
写代码前要理清思路,绘制流程图逻辑如下(不涉及后台接口)
需要使用到的Raphael-API
- paper.circle(x,y,r)// 圆形
- paper.ract(x,y,width,height,[r]) // 长方形
- paper.path([pathString]) // 绘制横线箭头
- paper.text(x,y,text)// 绘制文本
设计节点对象
布局
1、分析连接节点-圆形
圆形的起点就是为圆心,即圆形(x,y)是我们设计node节点里面的x和y属性;
圆形使用C代替,举行使用RT代替
起点坐标:mx = C.x ; my =C.y
2、分析连接节点-矩形
矩形连接我们需要连接到矩形左边的中间点(箭头连接点),其实算法较简单:矩形的y坐标+1/2矩形高
终点坐标:lx = RT.x ; ly = RT.y + RT.h/2
3、有了起点和终点坐标,如何连接呢?
这里需要使用paper.path([pathString]) 方法连接,参数是一个svg路径,使用如下图:
将属性arrow-end 参数设置为:classic-wide-long 就可以显示箭头了。
绘图事件
在每个节点单独封装了draw方法,接受paper参数即Raphael实例对象。
这里为什么需要单独将绘图事件提出来呢?
1、独立的模块完成单独的事情;
2、为了后续的扩展,例如后续如果需要增加判断节点,根据shape类型进行绘制菱形;
3、可以增加div-dom或者增加click/dbclick事件;
执行一下看看回放
模拟数据:
最终效果:
说明:这里主要讲解思路,如需完整代码请@作者或者留言
是否期待更多精彩讲解,可以点赞鼓励一下+1[比心],未完待续......
宁为代码累弯腰,不为BUG点提交
猜你喜欢
- 2025-06-12 MCP/A2A之后,Agent补齐最后一块协议拼图
- 2025-06-12 推荐一个好用的流程图建模工具-bpmn-js
- 2025-06-12 企业网站建设流程图 让网站建设更轻松
- 2025-06-12 Joker 低代码:AI 驱动的全栈开发神器,开启高效开发新范式
- 2025-06-12 ruoyi框架学习笔记一(流程图)(流程框架模板)
- 2025-06-12 还有人手动画图?一键生成 Draw.io 流程图,3分钟交作业爽炸!
- 2025-06-12 如何画好功能流程图?6个优质案例帮你5分钟快速入门!
- 2025-06-12 强大的可视化流程图编辑神器 — LogicFlow
- 2025-06-12 软件设计中:架构图、用例图、流程图、时序图与类图
- 2025-06-12 组态王和WinCC都可以用的3d工艺流程图
你 发表评论:
欢迎- 586℃几个Oracle空值处理函数 oracle处理null值的函数
- 580℃Oracle分析函数之Lag和Lead()使用
- 567℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 564℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 560℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 553℃【数据统计分析】详解Oracle分组函数之CUBE
- 539℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 533℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)