如何获取画布上下文的框尺寸?

时间:2014-01-17 13:15:26

标签: javascript html html5 html5-canvas

我刚开始使用HTML中的canvas元素。

我遇到了障碍,我在路径上覆盖了一个图像。当有人点击路径时,我可以使用 isPointInPath 方法来了解已点击的路径。

问题是我想重新绘制缩放到路径外边框的图像,但我看不到检索该信息的方法。

ctx.beginPath();
ctx.arc(can.width / 2, can.height / 2, can.height / 2.5, ((2 * Math.PI) / 10) * 7, (2 * Math.PI) / 10);
ctx.lineTo(can.width / 2, can.height / 2);
ctx.closePath();

在这个小提琴http://jsfiddle.net/JohnSReid/78PEX/中,我画了一个圆弧。如果我使用上面代码中绘制的点,那么我将裁剪弧的外部点。

有没有办法抓住弧正在使用的区域的尺寸?

1 个答案:

答案 0 :(得分:3)

演示:http://jsfiddle.net/m1erickson/9xgwY/

enter image description here

你可以在圆圈(或圆弧)的圆周上得到任何一点:

function XYonCircle(cx,cy,radius,radians){
    var x=cx+radius*Math.cos(radians);
    var y=cy+radius*Math.sin(radians);
    return({x:x,y:y});
}

获取弧线的边界框:

var cw=canvas.width;
var ch=canvas.height;
var PI2=Math.PI*2;

var left=XYonCircle(cw/2,ch/2,ch/2.5,PI2/10*7).x;
var top=XYonCircle(cw/2,ch/2,ch/2.5,PI2*.75).y;
var right=XYonCircle(cw/2,ch/2,ch/2.5,0).x;
var bottom=XYonCircle(cw/2,ch/2,ch/2.5,PI2/10).y;

如果改变弧线,一些边界点将处于弧穿过的任何角度:0,PI / 2,PI& PI * 3/2。

其余的边界点将位于弧的起点和终点。