首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React-konva使用加权箭头连接两个节点

React-konva使用加权箭头连接两个节点
EN

Stack Overflow用户
提问于 2019-09-01 22:50:55
回答 1查看 411关注 0票数 1

我想在react-konva中创建一个加权有向图。到目前为止,我所做的是创建节点并使用Arrow组件连接它们。下一步是在箭头上添加一个标签,它将表示边的权重。其主要思想是将箭头和文本组件组合在一起。文本的位置将由箭头的中点定义。这已经成功完成了。当文本包含的字符超过1个时,就会出现此问题。我希望文本的中间位置在箭头的中间。我尝试了不同的公式,但找不到任何解决方案。

我在codesandbox上提供了一个活的例子。默认文本0的工作方式与预期一致。现在,尝试使用不同的字符串,如54856。您将看到,字符串越长,Y位置增加的越多。此外,文本不会跨不同位置居中箭头。

这个问题被称为react-konva,但你不需要知道要贡献的库。在第53行,我们使用变量和数学公式来计算文本位置。如果你知道足够的几何知识来解决它,我将非常乐意接受你的答案!

为了更好地了解我的想法,请看一下这个app。尝试移动节点,并看到箭头中的文本始终居中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-03 00:16:55

解决方案可以简单得多。Konva可以将文本水平和垂直居中对齐。所以你可以只计算直线的中心。然后,只需使用一些宽度移动文本,并设置宽度和高度= offset * 2

代码语言:javascript
复制
<Text
  fill="red"
  x={(node1.x + node2.x) / 2 - 100}
  y={(node1.y + node2.y) / 2 - 100}
  width={200}
  height={200}
  align="center"
  verticalAlign="middle"
  text={text}
/>

演示:https://codesandbox.io/s/react-konva-weighted-arrow-0g4ij

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57746995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档