Canvas设置样式无效导致圆变成椭圆的问题研究剖析

举报
tea_year 发表于 2021/12/23 00:37:16 2021/12/23
【摘要】 Canvas设置样式无效导致圆变成椭圆的问题研究剖析,如下面代码段。 <!DOCTYPE html> <html lang="en"> <head> <...

Canvas设置样式无效导致圆变成椭圆的问题研究剖析,如下面代码段。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 设置的是600*600 */
        canvas{width: 600px;height: 600px;}
    </style>
</head>
<body>    
    <canvas id="canvas"  style="background: red;"></canvas>
    <script>
         //VSCode:恶心;插件不好搞;
        /** @type {HTMLCanvasElement}*/
        let canvas=document.getElementById('canvas');
        let ctx=canvas.getContext('2d');
        //画圆操作
        //利用2d对象进行绘制圆操作
        //arc(x,y,半径,开始位置,结束角度,选转方向)false:表示顺指针;true:逆时针
        console.log(canvas.width+","+canvas.height);
        ctx.arc(80,80,50,0,2*Math.PI,true); //绘制圆方法;
        ctx.fillStyle='blue';
        ctx.fill();
    </script>
</body>
</html>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

使用浏览器输出测试效果如下所示。
在这里插入图片描述ctx.arc(80,80,50,0,2Math.PI,true); //绘制圆方法;改行代码我们设置的是绘制圆,但是显示的椭圆怎么回事嗯?
这时候使用下面的语句进行测试一下,查看canvas的宽、高。
在这里插入图片描述我们发现canvas的宽和高是300 150.如下所示。
在这里插入图片描述为什么回事这样呢?我们现在把canvas的样式设置给注释掉。再次运行代码,查看浏览器效果。发现即使我们没有给canvas设置宽和高,也会自动有宽 高位300 150的设置。
在这里插入图片描述这时候,刚才绘制的椭圆思路已经很清晰了,原因在于,canvas绘制之后,首先相当于作为了一张300
150的图片进行绘制,即上图。这时候把上图截图后放到画图。
在这里插入图片描述因为默认的canvas已经绘制完圆形图片,现在被作为了图片再进行样式设置。代码“canvas{width: 600px;height: 600px;} ”相当于对这个图片进行拉伸设置,那么我们对这个图片进行拉伸,拉伸后效果就是图1的效果。
在这里插入图片描述这是canvas在使用过程中很容易掉的一个坑,所以,建议针对canvas的设置,直接在canvas的属性里面设置,不要在样式里面设置。

文章来源: aaaedu.blog.csdn.net,作者:tea_year,版权归原作者所有,如需转载,请联系作者。

原文链接:aaaedu.blog.csdn.net/article/details/119489297

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。