我知道我可以通过使用getContext('2d')
和设置创建路径来剪辑画布globalCompositeOperation
。
我注意到有时我可以使用-webkit-clip-path
或clip-path
在其他浏览器上(我在 Chrome 上)剪辑画布,有时我无法:
使用这个 HTML:
<canvas width="300" height="60"></canvas>
和 CSS:
canvas {
-webkit-clip-path: polygon(50% 33%, 75% 10%, 80% 80%, 60% 75%, 40% 60%, 20% 10%, 40% 20%, 50% 33%);
}
产生这个:
这似乎是正确的。
但是,我注意到,如果我改变画布的高度,它无法剪辑:
<canvas width="300" height="250"></canvas>
产生:
我的假设是它在浮点上裁剪时存在问题(百分比在像素之间而不是像素上裁剪),但是从百分比更改为像素坐标不会裁剪。
*这里分别是他们的 jsfiddle 页面的链接:
有谁知道为什么一个有效而另一个无效?
有没有一种稳定的方法来使用 CSS 剪辑画布元素,还是我需要使用画布上下文方法?
我问的原因是我想尽可能少用js。我有一串坐标,可以很容易地放入 css;而要使用该ctx.beginPath()...ctx.moveTo()...ctx.lineTo()...ctx.lineTo()...
方法,我需要为这些点执行一个 for 循环。
另外,我很好奇为什么第一个示例有效,如果有人可以解释的话。谢谢!:)