17

我想arrowToCanvasRenderingContext2D.prototype. 为此,我需要获取最后一点的坐标,例如

//... 
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)

//...

我怎样才能找回它们?

4

2 回答 2

10

这是画布已存储在某处的属性,它应该可以从属性中获得(可能),因为跟踪最后一个点的坐标可能很困难。
例如,当您绘制弧线时

ctx.arc(xc, yc, radius, starting_angle, ending_angle); 

您没有最后一点坐标的即时信息。
当然,这可以在这种情况下获得

lastX = xc + radius*Math.cos(ending_angle);
lastY = yc + radius*Math.sin(ending_angle);   

但是当我们知道画布确实记得最后一点时,需要包含这些计算是令人恼火的。
如果在 arc 指令之后添加一个

ctx.lineTo(x, y);  

它确实有效。因此画布将最后一点存储在某处,我不明白为什么它对程序员隐藏。

于 2018-11-26T15:00:25.743 回答
8

您必须自己跟踪它们。或者做不可思议的事情并覆盖 moveTo/lineTo 以通过CanvasRenderingContext2D.prototype.

于 2011-02-28T21:29:14.580 回答