无法使用画布绘制适当的圆

nea*_*tsu 1 html javascript css canvas

无论如何,我都无法画出合适的圆圈。我总是椭圆形。这是示例代码,向您展示我的意思:

function canvasClicked(number) {
  var c = "canvas" + number;
  var canvas = document.getElementById(c);
  var context = canvas.getContext("2d");
  var centerX = 150;
  var centerY = 75;

  context.beginPath();
  context.arc(centerX, centerY, 70, 0, Math.PI * 2);
  context.lineWidth = 10;
  context.strokeStyle = "red";
  context.stroke();
}
Run Code Online (Sandbox Code Playgroud)
#canvas1 {
  width: 200px;
  height: 200px;
  border: 1px solid black;
}
       
Run Code Online (Sandbox Code Playgroud)
<canvas id="canvas1" onclick="canvasClicked(1)"></canvas>
Run Code Online (Sandbox Code Playgroud)

我试图找出问题的原因,但没有成功。我知道centerX和centerY应该等于element.width / 2和element.height / 2,但是这给我带来了更尴尬的结果,使椭圆远离盒子的中心。

Yos*_*shi 5

问题是这样的:

#canvas1 {
  width: 200px;
  height: 200px;
  border: 1px solid black;
}
Run Code Online (Sandbox Code Playgroud)

在使用时:

<canvas id="canvas1" onclick="canvasClicked(1)"></canvas>
Run Code Online (Sandbox Code Playgroud)

或更确切地说:可见的CSS尺寸与基础画布尺寸不同。因为未将它们设置为元素的属性,所以:

<canvas id="canvas1" onclick="canvasClicked(1)" width="200" height="200"></canvas>
Run Code Online (Sandbox Code Playgroud)

将导致画布使用默认值300x150px。

演示:http : //jsbin.com/geralevi/1/


进一步参考:https : //developer.mozilla.org/en-US/docs/Web/Guide/HTML/Canvas_tutorial/Basic_usage

注意:如果渲染看起来失真,请尝试在属性中明确指定宽度和高度属性,而不要使用CSS。