• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点_html5教程技巧

html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点_html5教程技巧

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含画直线,线条,Canvas等相关知识,匿名希望在学习及工作中可以帮助到您
如果你还不知道Canvas是什么,可以看看上一篇.
在学画画的时候,线条是最基本的了,而线条的连接可以组成任何图形。在Canvas中也是如此。
在开始之前我们先拿出画布和画笔:

如图1,刷新一下,好像有点不对呢!怎么左上角缺了一小块似得?这不是错觉。原因嘛要从canvas的线条绘制方式说起。
问题:如果我画的矩形路径是宽高都是100,此时我的边线宽度是10px,那么这个描了边的矩形整体宽高是多少?是100+10*2=120吗?
如果边线是完全描在路径外侧的话,那么就是120。但Canvas不是。Canvas中的线条都有一条“中线”,这条中线位于line的绝对中间,线条的笔画以中线向两侧扩展。比如你的线条宽度是1,那么中线就在0.5的位置;宽度是5,那么中线就是在2.5。canvas的图形在描边的时候,都是路径与line的中线贴合,然后描边。如图2:

canvas画线条


所以,描边的时候线的一半在外侧,一半在内侧,即上面的矩形的整体宽度是100+(10/2)*2,等于110.
也正是因为这个原因,左上角出现缺角就理所当然了。因为这里没人画。
但为什么其余的角没有出现缺口呢?看你的图不是4个角都有缺口吗?
那是因为,我画线的过程中没有把画笔“提起来”,画笔是连续的,即没有moveTo过。不信我们现在来moveTo一下:


明白了?因为我们把笔提起来了。
现在我们删掉moveTo,不要纠结他了,我们来思考一下如何把左上角那个缺角给补上?
首先问个问题,我们的路径闭合了吗?这不是废话么,我们不是已经把路径绕回原点了么?当然算是闭合了!
错!这样只是让路径最后一个点和起点重合了而已,路径本身却没有闭合!
Canvas怎么闭合路径?用closePath().


无论我们把线条改到多粗————越粗越有人喜欢是吧?————这个四方形的四个角都是规矩的直角,不会出现圆滑的情况。圆滑的角是什么情况?请看PS中的四方形描边,图5:


看到了吧,越粗的边线,他的角的圆弧越大。
如果我想Canvas里面的边线也和PS这种一样,有没有办法呢?当然有,就是lineJoin属性。
lineJoin,意思即线的交汇处,有3个属性:miter(默认,尖角),bevel(斜角),round(圆角),如图6:

毫无疑问我们一下就能明白我们的矩形用的是尖角,所以试着把他改成圆角看看:
图形变成了这样,图7:

有点像PS的了吧?
另外,通过前面图我们了解到,Canvas的线条两端是平的,可不可以改呢?毕竟平的不好看。
也是可以的,即lineCap属性,这个就是定义线条的端点。lineCap有3个值:butt(平,默认),round(圆),square(方),如图8

看图就能发现,其实平头跟方头是一样的,区别只是平头没有伸出去那么一截。圆头和方头都会伸出去一截,这一节是多长呢?就是线条宽度的一半。
你有没有想到什么?哈哈,前面的闭合路径的问题,如果我们把lineCap设为方头,效果也是一样的!
但为了保险起见,我们还是要把路径闭合了,切记!
我还要提醒一下:闭合的路径没有端点!所以闭合的路径上看不到端点的样式。
另外:lineCap与lineJoin有点相似,注意不要搞混。
如果你眼尖并且运气不好,你可能会发现有时候1像素的线条不是1像素宽,好像要宽一些,模糊一些。如图9:

恭喜你!你遇到了一个不是bug的bug。这个很特别,我把他放到下一篇文章讲吧

您可能想查找下面的文章:

  • Html5新特性用canvas标签画多条直线附效果截图
  • html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
  • html5 Canvas实现画直线与设置线条的样式
  • html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点_html5教程技巧
  • Html5新特性用canvas标签画多条直线附效果截图_html5教程技巧

相关文章

  • 2018-12-03html5中转义实体字符,元数据, 跳转以及全局属性的图文详解
  • 2018-12-03如何判断一款android应用是主要基于html5还是native控件开发
  • 2018-12-03html5 canvas移动浏览器上实现图片压缩上传_html5教程技巧
  • 2018-12-03html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法_html5教程技巧
  • 2018-12-03HTML5中如何显示视频呢 HTML5视频播放demo_html5教程技巧
  • 2018-12-03html5中video(视频)元素的分析
  • 2018-12-03JS的表单传值与URL编码转换详解
  • 2018-12-03HTML5边玩边学(十)-俄罗斯方块之控制界面篇(源码)
  • 2018-12-03SVG(可缩放矢量图形)图片添加、高斯模糊、渐变与g标签
  • 2018-12-03a 标签为什么能够包含块级元素?

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • HTML5标准学习-文档结构详解
    • JsChart的组件使用详解
    • HTML5各引擎显示效率比较
    • 15个关于HTML的入门问题
    • 使用h5实现react拖拽排序组件的方法(附代码)
    • html5中浏览器是否能播放指定的音频/视频类型的方法canPlayType()
    • html5指南-2.如何操作document metadata
    • HTML5制作酷炫音频播放器插件图文教程
    • 专注前端还是全栈?
    • html5规定在拖动被拖动数据时是否进行复制移动或链接的属性dropzone

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有