svg - 两个完全相同的 SVG 路径绘制方式不完全相同

标签 svg rendering automatic-ref-counting antialiasing

我在 SVG Canvas 上绘制了两条完全相同的路径。即使另一条路径应该隐藏它,也可以看到后面的路径。这是 SVG:

<svg viewBox="0 0 100 100">
    <!-- BLUE PATH -->
    <path id="blue" d="M 50,50 m 0,-48 a 48,48 0 1 1 0,96 a 48,48 0 1 1 0,-96" stroke="blue" stroke-width="4" fill-opacity="0" style="stroke-dasharray: 302px, 302px; stroke-dashoffset: 0px;"></path>

    <!-- YELLOW PATH -->
    <path id="yellow" d="M 50,50 m 0,-48 a 48,48 0 1 1 0,96 a 48,48 0 1 1 0,-96" stroke="yellow" stroke-width="4" fill-opacity="0" style="stroke-dasharray: 302px, 302px; stroke-dashoffset: 120px;"></path>
</svg>

这是它的样子:

Circle demo

您可以在 JSFiddle 中对此进行测试:http://jsfiddle.net/k0xxp6g9/1/

蓝色路径可以从黄色线后面略微“泄漏”。我认为这与抗锯齿有关。将 shape-rendering="crispEdges"设置为 SVG 可以隐藏问题,但线条不再平滑。

我怎样才能解决这个问题,使蓝色路径不会“泄漏”在黄色路径后面?我不想让蓝色路径比黄色路径更细。

最佳答案

您正在看到抗锯齿的效果。

正确的解决方法是只在可见的地方绘制部分蓝色圆弧。

关于svg - 两个完全相同的 SVG 路径绘制方式不完全相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30002698/

相关文章:

iphone - 为什么我们在 iOS 中需要 property outlet 和 variable?

ios - 'int' 到 'NSString*' 的隐式转换

objective-c - Objective-C ARC转换的几个问题

svg - 将文本放在饼图的中心 - Highcharts

javascript - 动态 <svg-icon> 作为 Angular 指令

opengl - 在 OpenGL 中渲染 B 样条曲线

symfony - 渲染过程中抛出异常?

javascript - 背景图像未填充圆圈 - D3/JavaScript

html - Svg 背景覆盖浏览器颜色?

用于图形渲染的 Javascript 插件(树和节点)