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>

使用浏览器输出测试效果如下所示。
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的属性里面设置,不要在样式里面设置。

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

  1. html th样式设置,为什么tabletrth等设置样式无效?

    要坚信 在一个html文件中 , 可以设置它所包含的 "子文件"中 的元素的样式, 这是可以的,是有效的, 而且也只能这样设置! 比如在a.html中, 可能设置了layout, ...

  2. vue使用element-ui的el-date-picker设置样式无效

    一般在vue中设置css样式,由于代码为<style lang="scss" scoped>,设置了scoped,所以一般改变element-ui中的样式都使用::v- ...

  3. Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)

    1.首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, ...

  4. css设置中文字体后样式无效解决方法

    CSS编码设置问题: @charset "utf-8" IE6中问题:去掉CSS字体设置样式中的空格和双引号. 只要把 font-family: "黑体"; 改 ...

  5. canvas设置颜色及线条样式

    canvas设置颜色及线条样式 1. canvas设置颜色 2. canvas设置线条样式 1. canvas设置颜色 fillStyle = color; //设置图形的填充颜色 strokeSty ...

  6. RTF富文本中字体样式设置为-apple-system-font导致IOS客户端显示字体异常

    发现该段内容的font-famliy中有一些其他字体,如-apple-system-font -apple-system.BlinkMacSystemFont 是什么东东?根据 Webkit 博客,- ...

  7. python画椭圆-python绘制圆和椭圆

    源自:https://blog.csdn.net/petermsh/article/details/78458585 1. 调用包函数绘制圆形Circle和椭圆Ellipse from matplot ...

  8. QToolButton设置背景无效的思考

    .QToolButton{ border:0px; } .QToolButton:hover { background-color: rgb(221,221,221); } 问题:如图qss显然语法是 ...

  9. canvas示例样式_使用js canvas和atari vcs trivia制作基本html游戏的快速示例

    canvas示例样式 If you are anything like I was, you came into the programming world with some kind of fan ...

最新文章

  1. 网易严选全链路市场投放的数据产品策略
  2. 《DBA修炼之道:数据库管理员的第一本书》——1.4节评估DBA的工作邀请
  3. IBM Watson:用人工智能提升美国零售业消费体验
  4. java git subtree_Git subtree使用
  5. Python itertools库详细教程
  6. Debian系列软件管理(第二版)
  7. 分布式架构的分布式文件系统
  8. Transformer解析
  9. 机器学习教程 一-不懂这些线性代数知识 别说你是搞机器学习的
  10. 【链表递归构造二叉树】LeetCode 109. Convert Sorted List to Binary Search Tree
  11. getX,getRawX,getWidth,getTranslationX等的区别
  12. inDesign教程,如何控制文档中的页数?
  13. 蛋白互作常用的研究方法
  14. vue3 composition API
  15. 国美易卡运用人工智能实现线上线下消费场景
  16. 提交健康信息服务器拥挤,python hpilo 监控 hp ilo 服务器健康信息
  17. 关于『数据结构』:图论
  18. python泰坦尼克号数据分析_Python数据分析|泰坦尼克逻辑回归
  19. 陈景润定理与哥德巴赫猜想
  20. 学习英语的11个好习惯

热门文章

  1. C++ 静态线性表的顺序存储结构(数组实现)
  2. Idea+Maven+Jersey2+Tomcat配置Web服务
  3. java高级用法之:JNA类型映射应该注意的问题
  4. mlx rdma网卡指标参数简介
  5. ActiveMQ的消息存储(八)
  6. 操作系统(1) -- 计算机系统概述
  7. hdu 4588 Count The Carries 南京邀请赛
  8. 【dijkstra模板】旅游规划 (25 分)
  9. 【GIF动画+完整可运行源代码】C++实现 快速排序——十大经典排序算法之六
  10. NoClassDefFoundError和ClassNotFoundException