【问题标题】:Why is my HTML5 canvas drawing behaving this way?为什么我的 HTML5 画布绘图会这样?
【发布时间】:2015-09-08 19:16:45
【问题描述】:

我正在学习使用 HTML5 画布,我决定制作一个圆圈的动画:

http://codepen.io/anon/pen/KdpyVm

它正确地从一个点开始绘制,然后完成圆。但显然有一些基本的东西我不明白。

  1. 为什么弧线在绘制时最初显示为粗体,然后线条变细了 3/4?它会以某种方式重绘自身吗?
  2. 圆弧endAngle达到2PI,为什么不重新开始?

【问题讨论】:

    标签: javascript html canvas


    【解决方案1】:

    您没有清除整个画布(仅左上角部分),因此线条中的额外厚度发生在重新绘制圆圈时未清除的画布部分:

    ctx.clearRect(0,0,600,600);
    

    http://codepen.io/anon/pen/wKaPgz

    【讨论】:

    • 您还可以通过在draw 中评论对requestAnimationFrame 的调用来查看这是由其他图纸引起的
    【解决方案2】:

    正如 Spencer Wieczorek 所说,您并没有清理整个画布。

    您应该使用画布自己的宽度和高度来清除画布。

    变化:

    var ctx = document.getElementById('canvas').getContext('2d');
    

    收件人:

    var canvas = document.getElementById('canvas')
    var ctx = canvas.getContext('2d');
    

    然后像这样使用宽度和高度...

    ctx.clearRect(0, 0, canvas.width, canvas.height);
    

    这样,如果你改变画布大小,整个东西仍然会被清除。

    【讨论】:

      猜你喜欢
      • 2014-08-15
      • 1970-01-01
      • 1970-01-01
      • 2012-04-21
      • 2021-03-02
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多