网站首页 > 技术文章 正文
上一片文章讲解了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点提交
猜你喜欢
- 2024-10-03 五星级可视化页面(24):管线管路流程图可视化大屏。
- 2024-10-03 Java程序员必须熟记流程图 java程序流程图的绘制采用什么顺序
- 2024-10-03 Java程序员必备的一些流程图,这一篇就足够了
- 2024-10-03 画流程图学习React源码(一) 流程图js
- 2024-10-03 一份业务流程梳理+流程图绘制指南
- 2024-10-03 干货收藏 | Java 程序员必备的一些流程图
- 2024-10-02 工业流程图设计不久就是连个线么?那真是老思想了,看过来
- 2024-10-02 Java程序员必备的流程图 java程序员必备软件
- 2024-10-02 9个Java程序员必备的流程图,建议收藏
- 2024-10-02 9 张 Java 技术流程图 java流程图
你 发表评论:
欢迎- 05-10如何优化数据库和前端之间的交互?
- 05-10前端代码优化小秘籍(前端优化24条建议)
- 05-10VS Code当中的15个神仙插件,值得收藏
- 05-10如何自己开发一个Google浏览器插件?
- 05-10前端流行框架Vue3教程:14. 组件传递Props效验
- 05-10吃了一年的SU,最好用的插件都在这了
- 05-10前端必看!这款神器让网站界面告别千篇一律
- 05-10程序员请收好:10个非常有用的 Visual Studio Code 插件
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端懒加载 (45)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle查询数据库 (45)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)