antvis/G6

V5 drawOtherShape 重新渲染相同ID文本元素后,缩放操作之后文本显示不正常 #5036

Cat1007 posted onGitHub

Describe the bug

自定义节点中 字体渲染在缩放时会发生加深和模糊的情况

Your Example Website or App

https://codesandbox.io/s/twilight-dawn-tvq9s6?file=/index.js

Steps to Reproduce the Bug or Issue

  1. 首先 hover 到任意一个 自定义节点,触发 state 的变化,这时候会重新触发 drawOtherShape ,并绘制相同 ID 的文本元素
  2. 然后取消 hover
  3. 进行画布缩放

可以留意到,state 有发生过变化的节点,缩放后文本的渲染会改变,字体颜色会加深,在项目中,如果缩放比较小的时候,字体加深会更严重而且字体变得模糊

示例中有一段代码,如果说已经渲染过了这些自定义元素,清空,等下次 state 更新后再重新渲染,会发现这样渲染的图案不会有这个缩放问题,怀疑是不是内部一些和 ID 相关的性能优化导致文本缩放率相关逻辑有 bug

Expected behavior

自定义节点的文本在缩放的时候保持正常的渲染

Screenshots or Videos

No response

Platform

  • OS: [e.g. macOS, Windows, Linux]
  • Browser: [e.g. Chrome, Safari, Firefox]
  • Version: [e.g. 91.1]

Additional context

No response


Hi @Cat1007, Please star this repo if you find it useful! Thanks :star:! 你好 @Cat1007。如果该仓库对你有用,可以 star 一下,感谢你的 :star:!

posted by github-actions[bot] over 1 year ago

后续查看源码后,发现是通过 shapeMap 去做是否新建图形的判断,尝试在绘制 text 类型的元素是,upsertShape 传入的 shapeMap 强制指定为空对象,该问题消失。

posted by Cat1007 over 1 year ago

意思是如果在原图形基础上更新样式,会出现上述问题是吗

posted by Yanyan-Wang over 1 year ago

意思是如果在原图形基础上更新样式,会出现上述问题是吗

是的,如果shapeMap中存在该ID,看upsertShape的行为,是会去修改元素的style而并非重现创建一个图形元素。虽然这样修改后显示没问题,但是后续的缩放操作会让文本元素展示不正常。测试发现,对于一些元素的 opacity 属性的配置也会有这个问题,会导致透明度失效。我在使用字体的时候也使用了 rgba 的方式,不知道会不会和这个有关。

posted by Cat1007 over 1 year ago

试试 beta.13

posted by Yanyan-Wang over 1 year ago

试试 beta.13

👍这个版本传入shapeMap后渲染也正常了,不过对比上一版本,似乎缩放和拖拽的帧率下降了,这里是有什么改动吗。

posted by Cat1007 over 1 year ago

试试 beta.13

发现自定义边中,添加了text也会存在这个问题,beta13没修复

posted by Cat1007 over 1 year ago

试试 beta.13

👍这个版本传入shapeMap后渲染也正常了,不过对比上一版本,似乎缩放和拖拽的帧率下降了,这里是有什么改动吗。

给拖拽和缩放画布做了一些限流,理论上应该提升了🤔多大的数据量。

posted by Yanyan-Wang over 1 year ago

试试 beta.13

发现自定义边中,添加了text也会存在这个问题,beta13没修复

我发现了,我看一下

posted by Yanyan-Wang over 1 year ago

试试 beta.13

👍这个版本传入shapeMap后渲染也正常了,不过对比上一版本,似乎缩放和拖拽的帧率下降了,这里是有什么改动吗。

给拖拽和缩放画布做了一些限流,理论上应该提升了🤔多大的数据量。

应该和数据量无关,就是限流了,感觉操作没有以前跟手hhh

posted by Cat1007 over 1 year ago

beta.14 修了边的问题~拖拽也可以再感受下

posted by Yanyan-Wang over 1 year ago

beta.14 修了边的问题~拖拽也可以再感受下

14的话,缩放之后,似乎交互事件有问题,node:click,node:pointerenter 之类的事件,似乎元素的判定位置是错位的。。。

posted by Cat1007 over 1 year ago

手速很快……beta.15 修复了

posted by Yanyan-Wang over 1 year ago

手速很快……beta.15 修复了

Failed to resolve entry for package "@antv/layout". The package may have incorrect main/module/exports specified in its package.json.

posted by Cat1007 over 1 year ago

15 构建失败了

posted by Cat1007 over 1 year ago

改了改了 😅😅

🎉🎉 beta.20 发布,新增能力欢迎体验:

posted by Yanyan-Wang over 1 year ago

Fund this Issue

$0.00
Funded

Pull requests