如何使用JavaScript在HTML5 Canvas中绘制圆圈?

时间:2014-08-02 13:29:36

标签: javascript html5 canvas

如何使用最少的JavaScript代码在HTML5 Canvas中绘制一个简单的圆圈?

5 个答案:

答案 0 :(得分:17)

以下是在HTML5中使用JavaScript绘制圆圈的方法。

这是代码:



   var canvas = document.getElementById('myCanvas');
      var context = canvas.getContext('2d');
      var centerX = canvas.width / 2;
      var centerY = canvas.height / 2;
      var radius = 70;

      context.beginPath();
      context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);
      context.fillStyle = 'green';
      context.fill();
      context.lineWidth = 5;
      context.strokeStyle = '#003300';
      context.stroke();

      body {
        margin: 0px;
        padding: 0px;
      }

    <canvas id="myCanvas" width="578" height="200"></canvas>
&#13;
&#13;
&#13;

答案 1 :(得分:3)

我把上面的答案变成了一个有用的功能:

function drawCircle(ctx, x, y, radius, fill, stroke, strokeWidth) {
  ctx.beginPath()
  ctx.arc(x, y, radius, 0, 2 * Math.PI, false)
  if (fill) {
    ctx.fillStyle = fill
    ctx.fill()
  }
  if (stroke) {
    ctx.lineWidth = strokeWidth
    ctx.strokeStyle = stroke
    ctx.stroke()
  }
}

然后,像这样使用它在坐标 50,50,半径 25 处绘制一个带有红色笔划(宽度为 2)的黑色圆圈:

let ctx = canvas.getContext('2d')
drawCircle(ctx, 50, 50, 25, 'black', 'red', 2)

答案 2 :(得分:0)

使用新的Canvas Path2D(使用相同的canvas绘图API)创建形状更加容易,并允许将声明与图形本身分离,并重复使用复杂的几何图形:

var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var centerX = canvas.width / 2;
var centerY = canvas.height / 2;
var radius = 70;

let circle = new Path2D();  // <<< Declaration
circle.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);

context.fillStyle = 'blue';
context.fill(circle); //   <<< pass circle to context

context.lineWidth = 10;
context.strokeStyle = '#000066';
context.stroke(circle);  // <<< pass circle here too
body {
margin: 0px;
padding: 0px;
}
<canvas id="myCanvas" width="578" height="200"></canvas>

答案 3 :(得分:0)

首先,您需要获取画布上下文:-

const canvas = document.querySelector('#canvas');
const ctx = canvas.getContext('2d');

现在让我们定义位置和半径:-

const X = canvas.width / 2;
const Y = canvas.height / 2;
const radius = 45;

现在让我们设置颜色和线宽:-

ctx.lineWidth = 3;
ctx.strokeStyle = '#FF0000';

现在,要绘制圆,我们必须使用圆弧方法并将角度设置为2 Xπ

ctx.beginPath();
ctx.arc(X, Y, radius, 0, 2 * Math.PI, false);
ctx.stroke();

答案 4 :(得分:0)

根据 Sam 的回答,我将所有参数组合成一个对象,以便在使用该函数时更具可读性。

function drawCircle(obj) {
obj.ctx.beginPath();
obj.ctx.arc(obj.x, obj.y, obj.radius, 0, 2 * Math.PI, false);
if (obj.fill) {
    obj.ctx.fillStyle = obj.fill;
    obj.ctx.fill();
}
if (obj.stroke) {
    obj.ctx.lineWidth = obj.strokeWidth;
    obj.ctx.strokeStype = obj.stroke;
    obj.ctx.stroke();
}
}

使用:

let ctx = canvas.getContext('2d');    
drawCircle({
            ctx: ctx,
            x: 100,
            y: 100,
            radius: 20,
            fill: "green",
        });