如何覆盖HTML5画布弧?我推测这段代码可以工作,但是它留下了一个边框,尽管事实上它的值完全相同,只是一个不同的颜色..是否有一个我缺少的边界属性?
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<canvas id="surface" width="300" height="300"></canvas>
<script type="text/javascript">
var canvas = document.getElementById('surface');
var ctx = canvas.getContext('2d');
ctx.fillStyle = 'black';
ctx.beginPath();
ctx.arc(100, 100, 20, 0, Math.PI * 2, true);
ctx.fill();
ctx.fillStyle = 'white';
ctx.beginPath();
ctx.arc(100, 100, 20, 0, Math.PI * 2, true);
ctx.fill();
</script>
</body>
</html>
答案 0 :(得分:2)
此黑色边缘是抗锯齿的副作用。
最简单的解决方案是稍微增加弧的半径。
答案 1 :(得分:2)
对于这种情况,重新绘制包含弧的画布部分更有意义。您可以使用
清除画布的一部分ctx.clearRect(x, y, width, height);
或者为了简单起见,您可以清除整个画布并完全重绘:
ctx.clearRect(0, 0, canvas.width, canvas.height);
答案 2 :(得分:1)
如果您想要撤消功能,可以在绘制圆弧之前将图像数据复制到交换画布。然后,如果需要撤消,则将图像数据从交换画布复制到可见的数据。