如何获取椭圆边框的坐标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取椭圆边框的坐标相关的知识,希望对你有一定的参考价值。

如何获得绘制椭圆边框的所有坐标?我可以用画布画它。

我的想法是获取所有坐标并将它们存储到一个数组中。单击画布时,我想检查该点是否在椭圆的边框中。

答案

只需重新定义您的路径(不绘制它),然后使用(而不是isPointInPath()):

ctx.isPointInStroke(x, y)

它甚至会考虑行程的线宽。

此解决方案的问题是IE()中不支持这些路径检查。为此,您需要一个手动解决方案。但是对于那些(你可以检查这个功能)的浏览器,简单地使用它:

Example

var ctx = document.querySelector("canvas").getContext("2d");

function getEllipse(ctx, cx, cy, rx, ry) {   // render an ellipse
  var angleStep = 0.05, angle = angleStep;
  ctx.moveTo(cx + rx, cy);                   // start at angle 0
  while(angle < Math.PI*2) {
    ctx.lineTo(
      cx + rx * Math.cos(angle),             // store these to an array as wanted
      cy + ry * Math.sin(angle)
    );
    angle += angleStep
  }
  ctx.closePath();
}

// draw an ellipse:
getEllipse(ctx, 150, 75, 100, 60);
ctx.lineWidth = 10;
ctx.stroke();

// reuse ellipse path when checking for mouse position
ctx.canvas.onmousemove = function(e) {
  ctx.clearRect(0,0,300,150);
  var rect = this.getBoundingClientRect(),    // get adjusted mouse position
      x = e.clientX - rect.left,
      y = e.clientY - rect.top;
  
  ctx.strokeStyle = ctx.isPointInStroke(x, y) ?  "red" : "black";
  
  ctx.stroke();
};
<canvas></canvas>

以上是关于如何获取椭圆边框的坐标的主要内容,如果未能解决你的问题,请参考以下文章

html怎么画椭圆

js获取屏幕上圆和椭圆的点坐标

js获取屏幕上圆和椭圆的点坐标

js获取屏幕上圆和椭圆的点坐标

移动椭圆的板绘图代码

Javascript获取元素的坐标