有如下的代码:

<style type="text/css">canvas {position:absolute;height : 100%;width : 100%;}
</style>
<canvas id="canvas" width="100%" height="100%">
</canvas>
<script type="text/javascript">var canvas = document.getElementById('canvas'),context = canvas.getContext('2d')context.translate(70, 70);context.moveTo(0, 0)context.lineTo(70, -70)context.stroke();
</script>

结果实际的效果虚化非常严重,清晰度非常差,锯齿非常严重,如下所示:

为什么会出现这样的情况呢?原因是canvas的宽度与高度必须作为属性明确指定(也不能通过CSS设置),并且只能是数字,不支持百分比。基于以上的规则,所以很容易找到症结,canvas绘制的图片本来较小,但经过CSS强行放大拉伸,所以就会出现模糊、锯齿严重的效果。

解决的办法很简单,在绘制之前,首先设置canvas的宽度,代码如下:

var canvas = document.getElementById('canvas'),//  计算画布的宽度width = canvas.offsetWidth,//  计算画布的高度height = canvas.offsetHeight,context = canvas.getContext('2d')//  设置宽高canvas.width = width;canvas.height = height;

再次刷新浏览器,终于一切正常了。

结论

HTML中很多元素的宽高必须通过属性设定,而不是CSS,比如canvas,比如SVG。

为什么canvas绘制的线条会模糊、有锯齿?相关推荐

  1. Canvas绘制基本线条的方式

    Canvas绘制基本线条的方式 什么是Canvas - Canvas,顾名思义,是一块"画布",Canvas有着默认的宽(300px).高(150px); <canvas i ...

  2. canvas绘制不规则线条,类似画板的画笔,基于zrender

    本文介绍绘制类似画板中画笔功能的线条 zrender实现简易画板功能可绘制大部分常用图形在文章末尾可参考 多数情况下绘制线条首先想到的是用Line绘制,当然1或2像素的细线没什么问题 当线条变宽就有意 ...

  3. [七夕节]——一款基于canvas绘制五颜六色线条合成一个爱心发光动画特效

    Canvas基本介绍 Canvas介绍 1.canvas是html5的一个新标签,属于h5的新特性 2.canvas标签是一个图形的容器,简单点说就是一块画布,你可以在上画矩形,圆形,三角形,折线等等 ...

  4. 在js中,使用canvas绘制渐变色线条

    效果 代码 注:看注释 var colors = ['#6bfae1' ,'#63b9e9' ,'red' ,'yellow' ,'blue', 'green'];var ctx = canvas.g ...

  5. canvas引入图片后变模糊

    最近用Canvas画一些东西,结果用canvas绘制图片出来是模糊的!!!! 比如这样 完全失真了!!! 这是我写的源代码 //html<canvas id="canvas" ...

  6. canvas - 绘制图片,图片变模糊问题解决)

    问题:canvas绘制图片,图片变模糊 设定一个一定尺寸的canvas,我这里设置的画布大小是400px*400px.当一张图片完全画到画布上的时候,大概率都会出现图片模糊的情况. 我拿下面一张图片画 ...

  7. canvas绘制图片,图片变模糊

    canvas绘制图片,图片变模糊 问题: 设定一个一定尺寸的canvas,我这里设置的画布大小是400px*400px.当一张图片完全画到画布上的时候,大概率都会出现图片模糊的情况. 我拿下面一张图片 ...

  8. 用html5做一条线,使用HTML5 canvas绘制线条的方法

    使用HTML5 canvas绘制线条的方法 发布时间:2020-08-29 11:24:23 来源:亿速云 阅读:96 作者:小新 这篇文章主要介绍了使用HTML5 canvas绘制线条的方法,具有一 ...

  9. h5的横线_使用HTML5 Canvas绘制直线或折线等线条的方法讲解

    HTML5 Canvas基本概念讲解html5,这个应该就不需要多作介绍了,只要是开发人员应该都不会陌生.html5是「新兴」的网页技术标准,目前,除IE8及其以下版本的IE浏览器之外,几乎所有主流浏 ...

最新文章

  1. 怎么把项目推到gitlab上_Gitlab利用Webhook+jenkins实现自动构建与部署
  2. Linux 查看进程在哪个CPU上运行
  3. windown下linux子系统的安装和卸载
  4. python股票数据预处理_Python股票处理之六_数据预处理A
  5. 【Python】python3编码方式encode介绍
  6. Android TextView多行文本滚动实现
  7. DTS开发记录(5)-- 挑战增量导出
  8. 使用Echarts制作散点图(Excel导入数据方式)
  9. 禁用计算机服务,适当禁用系统服务 提升计算机运行速度
  10. 2020年7月的光立方包含程序和PCB文件
  11. 如何批量打印Word文件
  12. ArcGIS中ERROR 999999报错Configuration RasterCommander ImageServer can not be started解决
  13. android 自定义searchview,android自定义searchView圆角
  14. java 计时器归零_加一计时器——每隔1s六位数码管显示数字加1,直至999999,之后归零,重新开始。...
  15. 机器学习之回归与分类
  16. 北语计算机基础知识作业1,【图】- 北京语言大学20秋《计算机基础》作业1 - 昆山经济开发区其他教育培训 - 昆山百姓网...
  17. 安卓中的对称加密,非对称加密,MD5加密的算法
  18. Java解析魔兽争霸3录像W3G文件(三):解析游戏开始前的信息
  19. 现代程序员 VS. 古典程序员,你属于哪一类?
  20. arm对应hex_ARM 经典问答总结

热门文章

  1. JSON常见几种压缩方式
  2. 中国人的操作系统---陈榕
  3. HBase 列数据库 or 列簇数据库
  4. 【榜单公布】中秋征文结果揭晓,谁更“技”高一筹?
  5. 把无限循环小数化为分数
  6. IntelliJ IDEA 快捷键 创建测试类
  7. 5G下行用户数据传输/PDSCH信道编码
  8. 【写在2019考研后第二天,考研回顾】
  9. 原码除法运算(计算机组成原理19)
  10. 使用Pytorch构建一个分类器(CIFAR10模型)