我想用CanvasRenderingContext2D.prototype创建一个arrowTo函数。要做到这一点,我需要得到最后一点的坐标。 e.g。
//...
var ctx = someCanvas.getContext('2d');
ctx.moveTo(10,40);
//the coordinates of the last point are now (10,40)
ctx.lineTo(50,50);
//and now it's (50,50)
//...
如何检索它们?
答案 0 :(得分:5)
你必须自己跟踪它们。或者做不可想象的事情并覆盖moveTo / lineTo以通过CanvasRenderingContext2D.prototype
跟踪最后的坐标。
答案 1 :(得分:3)
这是一个已存储在某个位置的属性,应该从属性中使用它(可能),因为可能很难跟踪最后一点的坐标。
例如,当您绘制圆弧
ctx.arc(xc, yc, radius, starting_angle, ending_angle);
您没有最新的点坐标信息。
当然,在这种情况下,可以使用
lastX = xc + radius*Math.cos(ending_angle);
lastY = yc + radius*Math.sin(ending_angle);
但是当我们知道画布确实记住了最后一点时,需要包括这些计算很烦人。
如果在弧指令之后添加
ctx.lineTo(x, y);
它确实起作用。因此canvas的最后一点存储在某个地方,我不明白为什么它对程序员隐藏了。