书中给的代码示例如下
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<canvas id="canvas" width="1200" height="800"></canvas>
</body>
<script type="text/javascript">
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
drawRoundRect(100, 100, 200, 200, 50);
function drawRoundRect(x, y, w, h, r) {
context.beginPath();
context.moveTo(x+r, y);
context.arcTo(x+w, y, x+w, y+h, r);
context.arcTo(x+w, y+h, x, y+h, r);
context.arcTo(x, y+h, x, y, r);
context.arcTo(x, y, x+r, y, r);
context.stroke();
}
</script>
</html>
我不明白为什么这样可以绘制出正确的圆角矩形
就以代码中的例子为例,它绘制的步骤我认为是这样的
- 绘制点移到(110,100)
- 之后绘制点移到(300, 100),并以它为起点(300,300)为终点绘制一个弧线,此时绘制点移动到了(300, 300)
但是如果我就运行到第二步,之后直接lineTo到另一个位置,看看当前的绘制点到底是在哪的时候,发现绘制点(300, 110)的位置上,也就是说只是绘制了一个弧,下面的那个弧形没有绘制,但是完整的写下来又可以正常绘制一个圆角矩形