首页 > 其他分享 >【JointJS】ref 属性和 calc 相对计算函数

【JointJS】ref 属性和 calc 相对计算函数

时间:2023-08-05 14:35:11浏览次数:47  
标签:selector 0.5 label JointJS 图形 calc ref

define 函数和 calc 相对计算函数 中提到了 calc 相对计算函数,默认情况下,不指定 ref 属性,calc 以这个 g 标签作为基点计算值。

而一个图形下面(也就是一个 g 标签),会有很多其他子图形,例如,<ellipse><text><rect> 等。

g 标签下的子图形

如上图所示,这是一个由 define 函数自定义的图形,其包含了五个子图形,分别是 text、rect、circle、outline、ellipse。这些图形的计算基点都是 text 子图形,而非 g 标签。

tip:[start]在 JointJS 中,我们可以把一个图形理解成一个 g 标签,或者说一个容器。容器下面许多的子图形,而我们 define 函数定义的就是一个容器,其下有许多的子图形。tip:[end]

var CustomTextElement = joint.dia.Element.define(
  "examples.CustomTextElement",
  {
    attrs: {
      label: {
        textAnchor: "middle",
        textVerticalAnchor: "middle",
        fontSize: 48
      },
      e: {
        strokeWidth: 1,
        stroke: "#000000",
        fill: "rgba(255,0,0,0.3)"
      },
      r: {
        strokeWidth: 1,
        stroke: "#000000",
        fill: "rgba(0,255,0,0.3)"
      },
      c: {
        strokeWidth: 1,
        stroke: "#000000",
        fill: "rgba(0,0,255,0.3)"
      },
      outline: {
        ref: "label",
        x: "-calc(0.5*w)",
        y: "-calc(0.5*h)",
        width: "calc(w)",
        height: "calc(h)",
        strokeWidth: 1,
        stroke: "#000000",
        // 表示一个由长度为10的实线和长度为5的虚线交替组成的虚线样式。
        strokeDasharray: "10 5",
        fill: "none"
      }
    }
  },
  {
    markup: [
      {
        tagName: "ellipse",
        selector: "e"
      },
      {
        tagName: "rect",
        selector: "r"
      },
      {
        tagName: "circle",
        selector: "c"
      },
      {
        tagName: "text",
        selector: "label"
      },
      {
        tagName: "rect",
        selector: "outline"
      }
    ]
  }
);

var element = new CustomTextElement();
element.position(400, 200);
element.attr({
  label: {
    text: "Hello, World!"
  },
  e: {
    ref: "label",
    // rx 属性用于定义水平轴向的圆角半径尺寸。<ellipse> 和 <rect> 两个基本图形使用了这个属性。
    rx: "calc(0.5*w)",
    ry: "calc(0.25*h)",
    // cx 属性定义一个中心点的 x 轴坐标。
    cx: "-calc(0.5*w)",
    cy: "-calc(0.25*h)"
  },
  r: {
    ref: "label",
    x: "calc(0.5*w-10)",
    y: "calc(0.5*h-10)",
    width: "calc(0.5*w)",
    height: "calc(0.5*h)"
  },
  c: {
    ref: "label",
    r: "calc(0.5*d)"
  }
});

c、r、e 这三个 selector 下面都有一个 ref 属性,而且他们的值都是 label 这一个 selector,说明这三个图形是以图中文本为基点计算的相对值。

标签:selector,0.5,label,JointJS,图形,calc,ref
From: https://www.cnblogs.com/Himmelbleu/p/17607918.html

相关文章

  • BGP选路-本地优先级local-preference
    本地优先级特性1)共有属性,默认值为1002)只能工作于IBGP邻居之间传递3)从EBGP邻居学到的BGP路由本地优先级属性默认不显示,但是默认值为100,从自身IBGP邻居学习到的是可以显示的,默认值为1004)数值越大越优先核心配置:1)抓取感应兴趣流ipip-prefix1index10permit100.1.1.024greater-e......
  • Undefined symbol HAL_SRAM_Init (referred from lcd.o) 报错无法使用HAL_SRAM_Init
    前言最近在使用HAL库配置FSMC的时候,发现在使用CubeMX生成的fsmc的配置文件,编译不会报错:UndefinedsymbolHAL_SRAM_Init(referredfromlcd.o)而自己移除CubeMX生成的配置文件,一步步自己配置,就会出现上诉报错,并且将stm32f4xx_hal_sram.h文件包括进去后,仍然报错,奇怪的是MDK编......
  • Unity 编辑器预制体工具类PrefabUtility 常用函数和用法
    Unity编辑器预制体工具类PrefabUtility常用函数和用法简介在Unity中,预制体(Prefab)是一种非常有用的工具,它允许我们创建可重复使用的对象和场景元素。Unity提供了许多内置的工具和函数来处理预制体,其中一个重要的类就是PrefabUtility。PrefabUtility类提供了一系列函数,用于创建、......
  • Woreflint恶意软件c2分析
    WhatisTrojan:Win32/Woreflint.A!clinfection?InthisshortarticleyouwillcertainlydiscoverconcerningthedefinitionofTrojan:Win32/Woreflint.A!clandalsoitsnegativeeffectonyourcomputersystem.Suchransomwareareaformofmalwarethatiscl......
  • 8-3|org.logicalcobwebs.proxool.default - Shutting down 'default' pool immediatel
    org.logicalcobwebs.proxool.default-Shuttingdown'default'poolimmediately[ShutdownHook]"org.logicalcobwebs.proxool.default-Shuttingdown'default'poolimmediately[ShutdownHook]"是一个程序日志的输出,特别是涉及到一个名为'default......
  • SpringBoot 单元测试不执行:maven-surefire-plugin 版本问题
    SpringBoot单元测试不执行:maven-surefire-plugin版本问题 问题现象SpringBoot项目,在编写单元测试时,使用了JUnit4.13.2以上的版本。为了让Maven能自动运行单元测试,需要引入MavenSurefire或MavenFailsafe插件。项目中使用的maven-surefire-plugin版本号为......
  • wsgiref
    #服务wsgi协议的web服务器,django的web服务用的就是它#相当于个socket服务端,可以接收客户端发送过来的请求,处理,返回给客户端fromwsgiref.simple_serverimportmake_serverdefmya(environ,start_response):print(environ)start_response('200OK',[('Conten......
  • ip-prefix的配置举例
    前缀列表语句为:ipip-prefixLIST1index10permit10.0.0.08less-equal32详解:10.0.0.08:表示前8为必须完全相同没有greater-equal,表示继承前面的8less-equal32表示:8≤掩码≤32结果为:10.1.0.0/1610.1.1.0/2410.1.1.0/2610.1.1.1/3210.2.2.0/24全部通过......
  • [React] forwardRef typescript
    importReact,{forwardRef}from"react";//DeclareatypethatworkswithgenericcomponentstypeFixedForwardRef=<T,P={}>(render:(props:P,ref:React.Ref<T>)=>React.ReactElement)=>(props:P&React.RefAttri......
  • PascalCase & camelCase & kebabCase介绍
    原文链接:https://www.cnblogs.com/qdkfyym/p/13528076.html一、PascalCase  帕斯卡拼写法(也叫大骆驼拼写法)  PascalCase 帕斯卡拼写法是一种计算机编程中的变量命名方法。它主要的特点是将描述变量作用所有单词的首字母大写,然后直接连接起来,单词之间没有连接符。比......