// 获取线段初始化样式
getLeftLinkView() {let LinkView = joint.dia.LinkView.extend({addVertex: function(evt, x, y) {},
    removeVertex: function(endType) {},
    pointerdown: function(evt, x, y) {this._click = true;
      joint.dia.ElementView.prototype.pointerdown.apply(this, arguments);
    },
    pointerup: function(evt, x, y) {if (this._click) {// triggers an event on the paper and the element itself
        this.notify('cell:click', evt, x, y);
      } else {joint.dia.ElementView.prototype.pointerup.apply(this, arguments);
      }}});
  return LinkView;
},
// 构筑点
setState(x, y, s, label) {let cell = new joint.shapes.fsa.State({position: { x: x, y: y },
    size: { width: 5 || s, height: 5 || s }, // 点的大小
    attrs: {text: {text: label},
      circle: {'stroke-width': 1, // 点的线条宽度
        'fill': '#af9bff', // 点的填充色
        'stroke': '#7c68fc' // 点的线条颜色
      }}});
   // graph.addCell(cell);
  return cell;
},
// 加载线段端点按钮
loadLinkBtn(cellView) {let that = this;
  $('#display_box').append(`
        <div id="functionBtn">
          <div id="delPoint" class="left_top"><i class="iconfont" style="font-size: 18px;"></i></div>
          <div id="straightLine" class="left_bottom"><i class="iconfont"></i></div>
          <div id="curve" class="right_top"><i class="iconfont"></i></div>
        </div>
      `);
  // 删除
  $('.tool_wrap').on('click', '#delPoint', function () {console.log('Point');
    that.delLinkPoint(cellView);
    $('#functionBtn').hide();
    $('#delPoint').hide();
    $('#straightLine').hide();
    $('#curve').hide();
  });
  // 直线
  $('.tool_wrap').on('click', '#straightLine', function () {this.setLinkPoint(cellView);
  });
  // 曲线
  $('.tool_wrap').on('click', '#curve', function () {this.setLinkPoint(cellView);
  });
  // 改变外加按钮的位置,使之跟随当前元素移动
  this.creatWrapper(cellView, this.centerPaper);
},
// 创建新的点和线
setLinkPoint(cellView) {let that = this;
  // 判断是否为线段
  let linkP = cellView.model.clone();
  if (cellView.model.attributes.type === 'fsa.State' || cellView.model.attributes.type === 'fsa.Arrow') {console.log(linkP);
    // 修改克隆点的位置
    linkP.attributes.position = {x: cellView.model.attributes.position.x + 30,
      y: cellView.model.attributes.position.y + 30
    }that.centerGraph.addCells(linkP);
    that.centerGraph.addCells(that.setLink(cellView.model, linkP, '', '', false));
    console.log(that.setLink(cellView.model, linkP, '', ''));
  }
},
// 删除线段端点
delLinkPoint(cellView) {this.centerGraph.removeCells(cellView.model);
},
// 构筑线
setLink(source, target, label, vertices, TF) {console.log(source, target);
  let cell = new joint.shapes.fsa.Arrow({source: { id: source.id },
    target: { id: target.id },
    labels: [{ position: 0.5, attrs: { text: { text: label || '', 'font-weight': '' } } }],
    smooth: false || TF, // 控制线段能否有弧度的弯曲
    vertices: vertices || [],
    attrs: {'.connection': {stroke: '#7c68fc', // 线段颜色
        'stroke-width': 10, // 线段宽度
        // 'stroke-dasharray': '5 2' // 虚线
        'stroke-dasharray': '' // 实线
      },
      // '.marker-source': { stroke: '#7c68fc', fill: '#7c68fc', d: 'M24.316,5.318,9.833,13.682,9.833,5.5,5.5,5.5,5.5,25.5,9.833,25.5,9.833,17.318,24.316,25.682z' },
      // '.marker-target': { stroke: '#feb663', fill: '#feb663', d: 'M14.615,4.928c0.487-0.986,1.284-0.986,1.771,0l2.249,4.554c0.486,0.986,1.775,1.923,2.864,2.081l5.024,0.73c1.089,0.158,1.335,0.916,0.547,1.684l-3.636,3.544c-0.788,0.769-1.28,2.283-1.095,3.368l0.859,5.004c0.186,1.085-0.459,1.553-1.433,1.041l-4.495-2.363c-0.974-0.512-2.567-0.512-3.541,0l-4.495,2.363c-0.974,0.512-1.618,0.044-1.432-1.041l0.858-5.004c0.186-1.085-0.307-2.6-1.094-3.368L3.93,13.977c-0.788-0.768-0.542-1.525,0.547-1.684l5.026-0.73c1.088-0.158,2.377-1.095,2.864-2.081L14.615,4.928z' }
      '.marker-source': '', // 控制线段左侧图案
      '.marker-target': '' // 控制线段右侧图案
    }});
  // graph.addCell(cell);
  return cell;
},
// 获取中心点
getCenterPoint(cellView) {// console.log(cellView);
  // 获取定位点
  let oPoint = cellView.model.attributes.position;
  // 获取长宽
  let sPoint = cellView.model.attributes.size;
  // 计算中心点
  let cPoint = {x: oPoint.x + sPoint.width / 2,
    y: oPoint.y + sPoint.height / 2
  };
  // 将数据加入数组
  // lineArr.push(cPoint);
  return cPoint;
},
// 获取画布当中除自己以外的图形
getCellDelSlef(cellView) {// 创建默认数组
  let arr = [];
  // console.log(cellView);
  let allT = this.centerGraph.getCells();
  // console.log(allT);
  // 获取本身的cid
  let slefId = cellView.model.cid;
  // 删除选中的图形数据
  for (let i = 0; i < allT.length; i++) {// 判断cid是否相同
    let arrId = allT[i].cid;
    if (arrId !== slefId) {arr.push(allT[i]);
    }}return arr;
}
// 获取中心点
let mP = that.getCenterPoint(cellView);
console.log(mP);
// 获取画布所有图形
let allT = that.getCellDelSlef(cellView);
console.log(allT);
// 判断是否中心点重合
for (let i = 0; i < allT.length; i++) {console.log(1);
  let xc = allT[i].attributes.position.x + allT[i].attributes.size.width / 2;
  let yc = allT[i].attributes.position.y + allT[i].attributes.size.height / 2;
  if (xc === mP.x && yc === mP.y) {console.log(2);
    that.centerGraph.addCells(that.setState(mP.x, mP.y, 3, ''));
  }
}

JointJS绘制点和线段相关推荐

  1. 【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )

    文章目录 一.设置线宽度 二.绘制单条线段 GL_LINES 三.绘制多条线段 GL_LINES 四.绘制依次连接的点组成的线 GL_LINE_STRIP 五.绘制圈 GL_LINE_LOOP ( 偶 ...

  2. 用jointjs绘制微博关系图

    利用jointjs绘制矩形和箭头 绘制微博关系图 可是我不会自动布局...如果有大神知道的话请多多指教! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML ...

  3. R语言使用rnorm函数生成正太分布数据、使用plot函数可视化折线图、使用arrows函数在可视化图像中绘制箭头曲线、绘制带箭头线段,可以设置箭头角度,有几个箭头(1起点箭头、2终点箭头,3双箭头)

    R语言使用rnorm函数生成正太分布数据.使用plot函数可视化折线图.使用arrows函数在可视化图像中绘制箭头曲线.绘制带箭头线段,可以设置箭头角度,有几个箭头(1起点箭头.2终点箭头,3双箭头) ...

  4. 使用JointJS绘制流程图1

    JointJS官网 依赖:jquery,lodash,backbone 如果使用自动排版,需要添加依赖:dagre,graphlib 文中样例使用的资源文件 样例 源码 <!DOCTYPE ht ...

  5. JointJS绘制流程图

    摘要: JointJS是一个javascript图表库.你可以使用它制作静态或者动态的图表.关系表.流程图. 效果图:

  6. JointJs 绘制有数据流动效果的link连线

    实现效果 实现思路 箭头link由joint.shapes.standard.Link实现 圆点的播放动画由joint.dia.Link与linkView实现 通过interval来循环播放动画 其中 ...

  7. WinAPI: PolylineTo - 绘制一组连续线段(更新当前位置)

    //声明: PolylineTo(DC: HDC; {设备环境句柄}var Points; {点数组}Count: Integer {数组元素个数} ): BOOL;//如果不给 PolylineTo ...

  8. 小猿圈html5教程之canvas绘制线段方法

    HTML5现在是时下较火的编程语言之一,但是对于怎么学习很多朋友都是不了解的,不知道从何处下手,针对以上内容小猿圈web前端讲师每天会分享一个web前端知识,希望对你的前端学习有一定的帮助,今天分享的 ...

  9. php gd库画线,[PHP] GD库(十)绘制线段与圆弧 imageline、imagesetstyle 与 imagearc 函数...

    [PHP] GD库(十)绘制线段与圆弧 imageline.imagesetstyle 与 imagearc 函数 imageline() 函数用于绘制一条线段. imagearc() 函数用于绘制椭 ...

最新文章

  1. 最全!最完整的递归下降分析法代码!!! (实验报告,代码)
  2. Github+jsDelivr为脚本/图片等静态文件加速的全球CDN
  3. opencv ORB角检测
  4. mysql导入社工库文件_社工库-数据表结构设计和数据导入
  5. Quartus II调用modelsim ALTEA 的软件使用及问题
  6. 带进度条的Flash多文件上传面板(SwfUploadPanel) (转载)
  7. Python3 AES加解密(AES/ECB/PKCS5Padding)
  8. Swift翻译之-关于Swift
  9. Python3爬虫新手实践及代码、经验分享
  10. 洛雪音乐助手lx music desktop 1.2.2正式版
  11. win10设置计算机关机时间,w10怎么设置自动关机_win10电脑设置自动关机的方法
  12. Silverlig1.Silverlight读取外部XML加载配置-(使用WebClient读取XAP包同目录下的XML文件)...
  13. C#判断是否是节假日
  14. 互动派年会-comsol专题超强干货剖析
  15. java: 读取D:\repository\org\lz4\lz4-java\1.7.1\lz4-java.jar时出错; error in opening zip file解决方案
  16. Android入门小项目--微信登录界面源码(倒计时、fragement切换、activity信息传递)
  17. 科学计算机怎么调颜色,Win7旗舰版如何进行屏幕颜色校准
  18. 最新全国省市(简称) json文件
  19. K8S POD无限重启问题
  20. FRAGSTATS命名行模式运行

热门文章

  1. 《python数据挖掘入门与实践》决策树预测nba数据集
  2. 罗斯蒙特3051隔离膜片材料的选择
  3. 柔性灌装自动化生产线实训系统
  4. 电商平台的积分系统设计
  5. python写所有大写、小写、大小写、字母
  6. 【免疫算法】物流配送中心选址问题(Matlab代码实现)
  7. Linux 内核参数:vmstat
  8. wpf 展示特定列表结构
  9. Bugku CTF web source
  10. 92game帝国CMS电影视频在线播放网站源码 自适应手机端