javascript - SVG `<path>` 不精确

标签 javascript d3.js svg geometry precision

我使用D3.js绘制了数百个SVG <path>根据一些计算在 Canvas 上。

<小时/>

这是典型 SVG 的片段:

<path element="true" class="generation1" d="M 0 0 H 11.276566666666668 V 10.733333333333333 H 0 L 0 0" transform="translate(90.21253333333334,0)" fill="rgb(153, 126, 0)" stroke-width="1" stroke="rgb(153, 126, 0)" style="opacity: 1;"></path><path element="true" class="generation1" d="M 0 0 H 11.276566666666668 V 10.733333333333333 H 0 L 0 0" transform="translate(112.76566666666668,0)" fill="rgb(153, 126, 0)" stroke-width="1" stroke="rgb(153, 126, 0)" style="opacity: 1;"></path><path element="true" class="generation1" d="M 11.276566666666668 10.733333333333333 L 11.276566666666668 5.366666666666666 L 0 5.366666666666666 L 0 10.733333333333333 Z" transform="translate(157.87193333333335,0)" fill="rgb(153, 126, 0)" stroke-width="1" stroke="rgb(153, 126, 0)" style="opacity: 1;"></path><path element="true" class="generation1" d="M 11.276566666666668 10.733333333333333 h -11.276566666666668 L 11.276566666666668 0 Z" transform="translate(180.42506666666668,0)" fill="rgb(153, 126, 0)" stroke-width="1" stroke="rgb(153, 126, 0)" style="opacity: 1;"></path>

<小时/>

当我不给每个<path>时同一颜色的一笔,形状之间有很多很多微小的间隙。然而,当我添加一笔时,会出现其他缺陷,如下所示。

enter image description here

存在不相交的 Angular 、从错误位置开始并最终被其他形状覆盖的形状、显示背景的间隙或可见错误形状等。在某些缩放级别上,差异会更严重。

<小时/>

我似乎遇到了描述的问题的一个版本 here ,回答者说问题出在抗锯齿上。回答者建议添加 shape-rendering: crispEdges ,但这实际上使问题对我来说变得更糟,并且不能满足该问题的提出者。添加笔画可以消除 <path> 之间的大部分(但不是全部)间隙。 s,但同样,这会导致其他问题。

我也尝试过shape-rendering: geometricPrecision ,但这没有帮助。

<小时/>

如何消除形状之间的间隙而不产生额外的差异?

最佳答案

好吧,看来这里确实没有一个很好的解决方案。

不过,我意识到 lines-width 的值可以小于 1。因此,我尝试使用不同的分数,直到形状之间的大部分间隙被覆盖,但其他扭曲保持在最低限度。

我降落在笔画宽度:.5

如果有人发现其他东西,我会很乐意接受。

关于javascript - SVG `<path>` 不精确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44465506/

相关文章:

javascript - 如何将 div 包裹在项目周围?

javascript - 如何准确找出 $scope.$watch 中发生的变化

javascript - 将哈希过滤器传递给外部链接(类似于同位素,但自定义)

javascript - javascript 文件上传到 S3 存储桶后字符发生变化

javascript - D3 可视化响应所有屏幕尺寸,无需滚动条

html - CSS 和 SVG 动画

javascript - 单击后如何将div中的元素移动到第一个位置

javascript - 将解析的百分比数据转换为新数组

jquery - 依次淡出SVG的每条路径

javascript - 哪个更轻 : polygon or path?