【问题标题】:Canvas items not rendering properly画布项目未正确渲染
【发布时间】:2012-04-11 04:36:10
【问题描述】:

我已经定义了两个函数来渲染一个圆形和一个三角形。非常直接的东西。

function circle(offset, size){
  var color = $("#color option:selected").val();
  var canvas = document.getElementById("canvas");
  var context = canvas.getContext("2d");
  radius = size * 1;

  context.beginPath();
  context.arc(offset, 2, radius, 0, 2 * Math.PI, false);
  context.fillStyle = color;
  context.fill();
 }

 function triangle(offset, size){
  var color = $("#color option:selected").val();
  var canvas = document.getElementById("canvas");
  var context = canvas.getContext("2d");
  var width = size * 6;
  var height = size * 5;
  var padding = 0;

  // Draw a path
  context.beginPath();
  context.moveTo(offset + width/2, padding);
  context.lineTo(offset + width, height + padding);
  context.lineTo(offset, height + padding);
  context.closePath();

  // Fill the path
  context.fillStyle = color;
  context.fill();
}

我已将画布添加到我的页面:

<canvas id="canvas"></canvas>

由于某种原因,我可以看到圆形和方形 a 未正确渲染。请参阅随附的屏幕截图。

【问题讨论】:

    标签: html canvas html5-canvas draw


    【解决方案1】:

    我几乎可以保证这是因为您使用 CSS 宽度和高度而不是 &lt;canvas&gt; html 属性设置画布的宽度和高度。

    您需要在画布标签中定义宽度/高度:&lt;canvas width="500" height="500"&gt;

    或在代码中:

    var canvas = document.getElementById("canvas");
    canvas.width = 500;
    canvas.height = 500;
    

    而不是 CSS。如果你这样做了:

    &lt;canvas style="width: 500px; height: 500px;"&gt;

    然后您将拥有一个 300x150 的画布(默认大小),该画布被缩放/扭曲为 500x500,这几乎肯定是您得到的。

    (我写了上面的手绘,所以可能有错字,但你明白了)

    【讨论】:

    • 是的。我将其更改为: 并且完美运行!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    • 2012-09-30
    • 2012-11-28
    • 1970-01-01
    相关资源
    最近更新 更多