美文网首页
为什么canvas画布的宽高要设置在行间

为什么canvas画布的宽高要设置在行间

作者: 布丁喜欢小黄人 | 来源:发表于2018-08-22 09:50 被阅读0次

canvas的默认画布大小为300×150,通常我们想要自定义宽高都是在canvas标签中设置的,类似于这样:

 <canvas id="line" width="600" height="200">

今天突发奇想地在style中用CSS代码中设置了画布的大小:

canvas {
width: 600px;
height: 200px;
}
在style设置宽高之后的效果

然后绘制的线出现了锯齿和模糊,当然小白开始怀疑是不是自己设置的线太宽了,结果发现设置为1的时候仍然处于模糊效果,并且设置线的高度大于150的时候会显示不出来:

  //画坐标轴
 ctx.beginPath();
  ctx.moveTo(0,0);
ctx.lineTo(0,200);
 // ctx.moveTo(0,200);
 ctx.lineTo(500,200);
ctx.stroke();

原本我以为是因为没加上moveTo导致起点不准确的原因,可是翻了资料明明发现默认起点就是上一条线的结束点呀,随后上网找度娘之后发现了原因:
这是因为,使用CSS设置画布的大小会导致画布按比例缩放你设置的值。(CSS只是设置canvas在屏幕的显示大小)
解决方法:在绘制之前,首先设置canvas的宽度

 var canvas = document.getElementById("line");
  var width = canvas.offsetWidth;
   //  计算画布的高度
  var height = canvas.offsetHeight;
  //  设置宽高
  canvas.width = width;
  canvas.height = height;

或者是一开始就在行内设置画布的宽高就可。

效果正常啦
参考文章1
参考文章2

相关文章

  • 为什么canvas画布的宽高要设置在行间

    canvas的默认画布大小为300×150,通常我们想要自定义宽高都是在canvas标签中设置的,类似于这样: 今...

  • Canvas

    一、初识canvas canvas画布默认宽高是 300 * 150 px canvas宽高要使用canvas标签...

  • HTML5-canvas小知识

    canvas 画布大小 标签中设置,不加单位 js中设置 不建议用css设置,css里面设定canvas的宽高并不...

  • canvas 画布

    1、canvas 是H5 新加入的标签 用来在页面中绘制图形 一般称之为画布。2、canvas的宽高要以属性的形...

  • FeedTheRatCC开发心得

    1.布局 画布Canvas分辨率宽高设置为320,480。游戏节点均位于画布下。画布设置为fit width,来进...

  • Canvas-基础

    坐标系 css中的宽高不是画布的大小,当设置了css宽高,画布会随之缩放如果你的canvas的宽高是100,100...

  • H5新标签 canvas 画布

    canvas 画布 标签: web前端 直接上代码叨叨 注意 : canvas的宽高只能在标签上设置,千万不要在c...

  • canvas

    canvas:画布 画布大小默认300*150(宽高) canvas画布有一个坐标轴 坐标远点0,0 位置在左上角...

  • canvas开发项目总结

    canvas绘图 对canvas设置宽高,只能通过属性设置。使用css设置宽高会让canvas变形 开发手机端页面...

  • canvas 的基本用法

    一、元素 1、写法: 2、宽高设置 在使用 元素时必须设置宽度和高...

网友评论

      本文标题:为什么canvas画布的宽高要设置在行间

      本文链接:https://www.haomeiwen.com/subject/okpqiftx.html