Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取画布上下文的框尺寸?_Javascript_Html_Html5 Canvas - Fatal编程技术网

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

Javascript 如何获取画布上下文的框尺寸?,javascript,html,html5-canvas,Javascript,Html,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

我刚刚开始在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();
在这把小提琴里,我画了一条弧线。如果我使用上面代码中绘制的点,那么我将裁剪圆弧的外部点

是否有办法获取圆弧使用区域的全部尺寸?

演示:

您可以获得圆(或圆弧)圆周上的任意点,如下所示:

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

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

演示:

您可以获得圆(或圆弧)圆周上的任意点,如下所示:

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

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

演示:

您可以获得圆(或圆弧)圆周上的任意点,如下所示:

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

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

演示:

您可以获得圆(或圆弧)圆周上的任意点,如下所示:

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


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

据我所知,您需要计算它。这不应该太难。在根据需要调整4条边之前,我将从一个包围与圆弧半径相同的圆的边界框开始。由于圆弧同时通过0°和90°,因此可以看出不需要调整顶部或右侧。您只需计算端点的坐标,因为180°和270°未通过,请分别调整左侧和底部。(使用“常规”角度)-我忘了画布是“倒置的”,即90°是向下的,而不是向上的。据我所知,您需要计算它。这不应该太难。在根据需要调整4条边之前,我将从一个包围与圆弧半径相同的圆的边界框开始。由于圆弧同时通过0°和90°,因此可以看出不需要调整顶部或右侧。您只需计算端点的坐标,因为180°和270°未通过,请分别调整左侧和底部。(使用“常规”角度)-我忘了画布是“倒置的”,即90°是向下的,而不是向上的。据我所知,您需要计算它。这不应该太难。在根据需要调整4条边之前,我将从一个包围与圆弧半径相同的圆的边界框开始。由于圆弧同时通过0°和90°,因此可以看出不需要调整顶部或右侧。您只需计算端点的坐标,因为180°和270°未通过,请分别调整左侧和底部。(使用“常规”角度)-我忘了画布是“倒置的”,即90°是向下的,而不是向上的。据我所知,您需要计算它。这不应该太难。在根据需要调整4条边之前,我将从一个包围与圆弧半径相同的圆的边界框开始。由于圆弧同时通过0°和90°,因此可以看出不需要调整顶部或右侧。您只需计算端点的坐标,因为180°和270°未通过,请分别调整左侧和底部。(使用“常规”角度)-我忘了画布是“倒置的”,即90°是向下的,而不是向上的