【问题标题】:canvas arc y-axis overflow画布弧 y 轴溢出
【发布时间】:2013-07-14 01:45:56
【问题描述】:

我正在尝试在画布中绘制一条弧线,并且我想使该弧线填充画布。

我试图使圆弧的大小为画布的一半,并且我工作得很好,但是当我将半径增加到与画布相同的宽度时,我发现一个错误......至于圆弧宽度它很好,但对于高度它增加了很多,消失了,我觉得半径是 y 轴的两倍。

当我在 jsFiddle 中检查它时,它工作得很好......也许我需要处理一些 css 之类的东西?

var canvas = document.getElementById("canvas2");
var context = canvas.getContext("2d");
var counterClockwise = false;
var x = canvas.width /2;
var y = canvas.height /2;

context.beginPath();
context.arc(x, y, x-9, 0, 2*Math.PI);
context.stroke();

这是 html 正文:

<!DOCTYPE html>
<html>
<head>
<link type="text/css" rel="stylesheet" href="css/font-awesome.css" />
</head>
<body>
<canvas id="canvas2" style="width:207px;height:207px"></canvas>
</body>
</html>

【问题讨论】:

    标签: javascript html canvas


    【解决方案1】:

    在画布元素本身上设置宽度和高度,而不是在 CSS 中:

    canvas.width=207;
    canvas.height=207;
    

    在 css 中设置宽度和高度会扭曲您的绘图(正如您所发现的那样)。

    另外,当你画一个圆弧时,一定要调用 context.closePath();

    这是代码和小提琴:http://jsfiddle.net/m1erickson/adGfS/

    <!doctype html>
    <html>
    <head>
    <link rel="stylesheet" type="text/css" media="all" href="css/reset.css" /> <!-- reset css -->
    <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
    
    <style>
        body{ background-color: ivory; }
        canvas{border:1px solid red;}
    </style>
    
    <script>
    $(function(){
    
      var canvas = document.getElementById("canvas2");
      var context = canvas.getContext("2d");
    
      canvas.width=207;
      canvas.height=207;
    
      var x = canvas2.width /2;
      var y = canvas2.height /2;
    
      context.beginPath();
      context.arc(x, y, x-9, 0, 2*Math.PI);
      context.closePath();
      context.stroke();
    
    }); // end $(function(){});
    </script>
    
    </head>
    
    <body>
        <canvas id="canvas2"></canvas>
    </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-16
      • 2012-08-28
      • 2014-02-16
      • 2011-09-04
      • 2020-10-30
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多