好问题!规范作者(和我)相信答案是:
- 这是合乎逻辑的,应该是;
让我们探讨一下其中的原因。
绘制红色路径时,您没有绘制单独的线。您正在绘制一条完整的路径,一条完整的路径一次全部绘制并一次全部描边,并且路径的颜色不能“重叠”自身。这是规范有意定义的。上面写着:
由于子路径都被描画为一个,因此在一次描画操作中路径的重叠部分被视为它们的并集是绘制的。
如果您想获得叠加效果,您可以简单地使用多个路径,就像添加绿线一样。因此,您可以在必要时轻松地以其他方式进行操作。
您应该认为此功能是一件好事:如果 Canvas 规范要求路径的每个子路径产生额外的覆盖,那么每条路径的拐角(每条线连接的地方)都会看起来很糟糕!(有关每个角落的示例,请参见此处的红色连接)
由于在十字架上的路径重叠也意味着它会在每个角落重叠,因此规范决定在抚摸时只使用联合路径,这将保持正常的角落作为预期的默认值(我认为大多数人会期望它们像他们那样看,而不是像我展示的那样看)。如果线被覆盖在交叉路口而不是每个角落,那么这将不是一个一致的规则,这使得学习和工作变得更加困难。
所以我希望推理很清楚。规范必须给我们 3 件事,通常按这个顺序:最常见的预期输出(角落看起来像他们一样),一致性(如果我们覆盖在线交叉,我们也会在角落做,所以我们应该' t 这样做),并且易于理解。
一个好的规范总是一致的。如果某件事是一致的,那么它就更容易学习,一旦你知道为什么要这样做,就更容易理解。