关于使用canvas画图时,图片被拉伸的问题

如果您觉得我的文章有用,欢迎点赞和关注,也欢迎光临我的个人博客https://github.com/BokFang

canvas元素可以用来画2D图形,我们通过写js来完成任务。
首先,我们在html文件中写入:

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

然后在css中给canvas一个背景颜色:

#canvas{
  background: #04f7ff;
}

此时浏览器中是这样的:

image.png

正如我们所看到的,canvas的默认值是宽300高150。我想把画布变为正方形,所以在css中加入width:300px;height:300px。接着我们在上面画圆。

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

ctx.beginPath();
ctx.arc(75, 75, 50, 0, 2 * Math.PI);
ctx.stroke();
image.png

却发现圆被拉伸为椭圆了。

原因:

canvas是由一张画板和一张画纸铺成的,画板相当于一个容器,我们在画纸上作画。当画纸与画板宽高不相等时,图形就会被拉伸。

解决方法:

1.在html标签中设置canvas属性:

<canvas id="canvas" width = 300 height = 300></canvas>

2.在js中设置:

var canvas = document.getElementById('canvas');
canvas.width=300;
canvas.height=300;

正常效果

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文首发于我的个人博客:http://cherryblog.site/github项目地址:https://git...
    sunshine小小倩阅读 6,078评论 1 8
  • 什么是canvas HTML5 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. 标签只...
    JuanitaLee阅读 3,777评论 0 1
  • 神奇的 canvas--AICODER 全栈培训 IT 培训专家 一、canvas 简介 1.1 什么是 canv...
    IT老马阅读 6,009评论 0 10
  • 一、canvas简介 1.1 什么是canvas?(了解) 是HTML5提供的一种新标签 Canvas是一个矩形区...
    J_L_L阅读 5,437评论 0 4
  • 人与人之间的情感有时是多么淡薄与残酷。 曾经两人同走的路,同看的景,同读的书, 两人如呼吸般贴近的参与彼此的生活,...
    夜拾星光琉璃落阅读 1,118评论 0 0