【坑】html5中使用context.lineWidth设置线的宽度是1,然而输出的宽度是2的原因
2015-08-11 19:35
816 查看
代码实现
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <canvas id="canvas" width="800" height="600"></canvas> </body> <script type="text/javascript"> var context = document.getElementById("canvas").getContext("2d"); context.beginPath(); context.lineWidth = 1; context.moveTo(100, 100); context.lineTo(600, 100); context.stroke(); context.beginPath(); context.moveTo(100.5, 200.5); context.lineTo(600.5, 200.5); context.stroke(); </script> </html>
在线演示
原因
可以看到上面一条线比下面的要粗,产生原因是因为当我们要在(100,100)和(600,100)这两个像素之间划线的时候,实际上是把那个宽度为1的线段的中间线画在了(100,100)和(600,100),而线段的0.5像素的图像画在了那条中间线的上部,另一0.5像素画在了中间线的下部,所以这条线段实际上是跨了两个像素的宽度的。之后浏览器自动把0.5像素化成了1个像素,所以结果就会画出宽度为2的线段了。如下图所示,在(1,0)和(1,3)之间划线的效果如下图中红色框框的部分就是浏览器自己补全的(有可能是淡色,类似抗锯齿的效果)
相关文章推荐
- HTML5本地存储Localstorage
- HTML5——Data Url生成
- HTML5的Canvas实现小圆点在屏幕内跑动
- HTML5 Boilerplate - 让页面有个好的开始
- 移除HTML5 input在type="number"时的上下小箭头
- 利用html5的FormData对象和ajax实现异步文件上传
- HTML5 3D翻书效果(双面效应)
- 1001---HTML5介绍
- html5的spellcheck属性(拼写、文法检查)
- html5 新选择器 querySelector querySelectorAll
- 利用html5实现上传图片预览
- HTML5
- 【坑】html5中使用canvas绘制两个strokeRect之间忘了用beginPath()
- HTML5之音频audio知识(部分vedio)
- Html5(4)Selection 和 Range对象
- html5基础学习
- Html5(3)表单相关新特性
- html基础学习之--html5与css3权威指南--第一二章读书笔记
- html基础学习之--html5与css3权威指南--第一二章读书笔记
- HTML5 canvas 绘制精美的图形