首页 > 其他分享 >【JointJS】通过 Port 与图形进行连接

【JointJS】通过 Port 与图形进行连接

时间:2023-08-07 22:56:46浏览次数:47  
标签:markup 端口 port attrs JointJS 图形 Port

Ports 端口

一个元素的一端和另一个元素的一端相连可以在 Graph(逻辑层)中通过 Link 的 targetsource 两个函数实现相连。

从用户的角度出发,在 Paper(视图层)中,用户通过鼠标移动从一个元素的一端拉一条线和另一个元素的一端相连,而这就需要借助端口(Ports)来实现。

端口相连

创建单个 Port

创建单个 Port

配置 Port

const port = {
  // 端口样式,与 Element 的 attrs 一致
  attrs: {
    // 端口的配置项
    portBody: {
      magnet: true,
      width: 16,
      height: 16,
      x: -8,
      y: -8,
      fill: "#03071E"
    },
    // 端口附带一个文本
    label: {
      text: "port"
    }
  },
  // 文本的相关配置
  label: {
    position: {
      name: "left"
    },
    markup: [
      {
        tagName: "text",
        selector: "label"
      }
    ]
  },
  // 端口的子图形,是一个矩形
  markup: [
    {
      tagName: "rect",
      selector: "portBody"
    }
  ]
};
  1. attrs:JointJS 的样式定义。与 Element 的属性是一致的。
  2. label:端口的文本描述,下面的 markup 与第三点的 markup 是一样的。
  3. markup:定义端口图形下的子图形的 SVG 类型,并给子图形设置一个名称,以便于 attrs 的样式可以正确对应到子图形上。

添加 Port

可以通过构造函数传递对应的属性添加 Port。

const rect = new joint.shapes.standard.Rectangle({
  position: { x: 275, y: 50 },
  size: { width: 90, height: 90 },
  ports: {
    items: [port] // add a port in constructor
  }
});

也可以通过图形的函数 addPort 添加 Port。

const rect = new joint.shapes.standard.Rectangle({
  // ...
  del:[ports: {]
    del:[items: [port] // add a port in constructor]
  del:[}]
});

add:[rect.addPort(port);]

标签:markup,端口,port,attrs,JointJS,图形,Port
From: https://www.cnblogs.com/Himmelbleu/p/17612974.html

相关文章

  • Codeforces Round 890 (Div. 2) supported by Constructor Institute A-E1
    An=50非常小所以直接暴力枚举枚举每次把某个数以下的全部减完然后看一下是否上升就行 https://codeforces.com/contest/1856/submission/217275334  B题直接贪心前面优先放最小的最后一个放最大的 然后如果重复了就到前面去看能不能调整一下 https://codeforces.......
  • 《VTK图形图像开发进阶》第2章——VTK智能指针
    2.1引用计数如果很多对象有相同的值,在程序里没有必要将这个值存储多次。更好的办法是让所有的对象共享这个值。这么做不但节省内存,而且可以使程序运行得更快,因为不需要构造和析构这个值的副本。引用计数就是这样一个技巧,它允许多个有相同值的对象共享这个值。引用计数是个简单......
  • 洛谷 P6010 - [USACO20JAN] Falling Portals P
    先考虑怎么对一组询问求解答案。容易想到一种贪心策略:如果\(a_{q_i}<a_i\),那么我们肯定希望自己能够尽量快地下落,因此如果遇到一个下落速度大于当前世界下落速度的传送门我们肯定就会进那个世界,如此走下去知道能够传送到世界\(q_i\)为止。对于\(a_{q_i}>a_i\)的情况也类似,只......
  • 《VTK图形图像开发进阶》第2章——坐标系统及空间变换
    2.1坐标系统计算机图形学里常用的坐标系统主要有4种,分别是Model坐标系统、World坐标系统、View坐标系统和Display坐标系统,此外还有两种表示坐标点的方式:以屏幕像素值为单位和归一化坐标值(各坐标轴取值范围为[-1,1])。它们之间的关系如下图。Model坐标系统:定义模型时所采用的......
  • xray安装,图形化界面以及和bp联动
    这两天学的乱起八糟的,本来是学反序列化,奈何太穷只能白嫖别人的ctfshow,做着做着发现环境没了掉线了,加上php基础不太好断断续续的没学啥玩意,就先放一边瞅了瞅php基础,顺带补之前互联网协议啥的作业也忘了咋回事就想起来装xray了直接下载或者是下载之后传上去:https://github.com/cha......
  • Codeforces Round 890 (Div. 2) supported by Constructor Institute
    Preface现在开始严格按照双号上分法来打CF了,大致就是每次比赛都拿两个号中分较少的那个打,这样可以保证两个号的最高分不降然后昨天打完就后悔了,没有拿hl666那个号打导致没抓住难得的上分机会,本来可以打到橙名渡劫局的但分全加在Kusanagi_Misuzu那个号上了不过昨天这场其实可以......
  • 计算机图形学
    1.随机扫描和光栅扫描随机扫描是一种按照像素点的位置随机扫描的方式,显示器不是按照固定的顺序扫描每个像素点,而是根据需要扫描的像素点位置来决定扫描顺序。这种方式可以提高显示器的响应速度和显示质量,但需要更高的计算资源和更复杂的控制逻辑2.走样与反走样走样通......
  • Codeforces Round 890 (Div. 2) supported by Constructor Institute ————C - T
    关于这场div2,只能说一言难尽C题可以二分的,赛时看到n<=1000,直接往\(O(n^2)\)考虑,想了一会贪心的话能写出来,但是,细节太多没调出来,G掉打分。\(O(n^2)\)做法:思路:每次让i为起点,往前贪心枚举,并且当前位置如果满足,也要枚举当前区间,细节就是要注意上下限,赛时,漏了一种上界小于下届的情......
  • Codeforces Round 890 (Div. 2) supported by Constructor Institute 题解
    A.TalesofaSort关键就是找逆序对记一组逆序对下标为\(l,r\),则求出最大的\(a_l\)即可B.GoodArrays记要构造的GoodArray为\(b\)前置:\(\forall1\lei\len,b_i=1\)然后\(O(n)\)扫一遍看一下有没有重复,有重复就\(b_i\leftarrowb_i+1\)扫完之后,记\(sum=\sum_......
  • 【ACM专项练习#03】打印图形、栈的合法性、链表操作、dp实例
    运营商活动题目描述小明每天的话费是1元,运营商做活动,手机每充值K元就可以获赠1元,一开始小明充值M元,问最多可以用多少天?注意赠送的话费也可以参与到奖励规则中输入输入包括多个测试实例。每个测试实例包括2个整数M,K(2<=k<=M<=1000)。M=0,K=0代表输入结束。输出对于每个测试实......