用dia绘制流程图

2018-9-4

今天在win10上装了visio 2016,在manjaro上装了dia。以后就要开始绘图了。用流程图、思维导图帮助思考、总结、归档资料和知识。

在manjaro上安装完,打开dia是分两个窗口。在软件里找了一圈都没有找到合并到一个窗口的设置。dia这个软件在国内网络上能搜索到的资料不多,于是在google里输入关键词dia+two+window,前两个就解决了我的问题。

英语上这个叫all-in-one,其实以前用gimp时接触过这个概念。dia软件比较特殊,需要在启动时加上参数–integrated(这里是两个横杠,不知道为什么编辑好的blog发不后就成了一个横杠)。难道以后都要在终端上敲命令启动dia?我使用的mate环境用的是Brisk菜单启动器,首选项里有个“主菜单”的配置器,很容易就在dia后面加上了参数。

此外,x-window上点图标启动dia及时最初窗口没有all-in-one,dia也可以正常使用,但是我注意到,在终端启动dia时会反馈gtk-warning:无法在模块路径中找到主题引擎:“murrine”。google搜索了下,需要安装一个gtk-engine-murrine的包。murrine是意大利语,意思是art glass(美丽、养眼?)。
解决

今天其他的收获还是挺多的,重要的是解决了vmware在windows上没法将nat网络连接到宿主机上的难题。这个困扰了我两个月,被逼在manjaro上用virtualbox学习centos。等有时间,深入整理下相关资料单独发一篇总结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个使用 JointJS 绘制流程图并实现节点拖拽的示例代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JointJS 流程图示例</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/jointjs@3.4.1/dist/joint.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/backbone@1.4.0/backbone-min.js"></script> <script src="https://cdn.jsdelivr.net/npm/jointjs@3.4.1/dist/joint.min.js"></script> </head> <body> <div id="paper"></div> <script> $(function() { var graph = new joint.dia.Graph(); var paper = new joint.dia.Paper({ el: $('#paper'), width: 600, height: 400, gridSize: 10, model: graph, }); var rect = new joint.shapes.standard.Rectangle(); rect.position(100, 100); rect.resize(100, 40); rect.attr({ body: { fill: 'lightblue', rx: 10, ry: 10, strokeWidth: 2, stroke: 'black', }, label: { text: 'Hello', fill: 'black', fontSize: 18, fontWeight: 'bold', textAnchor: 'middle', textVerticalAnchor: 'middle', } }); rect.addTo(graph); var circle = new joint.shapes.standard.Circle(); circle.position(300, 200); circle.resize(60, 60); circle.attr({ body: { fill: 'lightgreen', strokeWidth: 2, stroke: 'black', }, label: { text: 'World', fill: 'black', fontSize: 18, fontWeight: 'bold', textAnchor: 'middle', textVerticalAnchor: 'middle', } }); circle.addTo(graph); paper.on('cell:pointerdown', function(cellView) { // 记录鼠标按下时的节点位置 cellView.model.set('oldpos', cellView.model.get('position')); }); paper.on('cell:pointerup', function(cellView) { // 如果节点位置发生变化,则更新模型中的位置数据 var newPos = cellView.model.get('position'); var oldPos = cellView.model.get('oldpos'); if (newPos.x !== oldPos.x || newPos.y !== oldPos.y) { cellView.model.set('oldpos', newPos); } }); }); </script> </body> </html> ``` 在这个示例中,我们首先创建了一个画布对象 `paper` 和一个图形模型对象 `graph`。然后创建了两个图形节点,一个是矩形,一个是圆形,分别使用 `joint.shapes.standard.Rectangle` 和 `joint.shapes.standard.Circle` 类来创建。 我们为这两个节点设置了一些属性,如位置、大小、填充色、边框颜色等,还为节点添加了一个文本标签,用于显示节点的名称。 接下来,我们使用 `paper.on` 方法监听了 `cell:pointerdown` 和 `cell:pointerup` 两个事件,分别表示节点被拖拽时和拖拽结束时的处理。 在 `cell:pointerdown` 事件中,我们记录了鼠标按下时的节点位置,使用 `cellView.model.set('oldpos', cellView.model.get('position'))` 将其保存到节点模型的 `oldpos` 属性中。 在 `cell:pointerup` 事件中,我们判断节点的位置是否发生了变化,如果变化了,则更新模型中的位置数据,使用 `cellView.model.set('oldpos', newPos)` 更新 `oldpos` 属性。 这样,我们就实现了流程图中节点的拖拽功能。用户可以通过鼠标拖动节点来改变其位置,拖动结束时,节点的位置数据将被更新到模型中。 注意:本示例代码使用了 JointJS 3.x 版本的 API,如果使用其他版本的 JointJS 库,可能需要做一些修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值