HTML5 Canvas——用路径描画线条实例介绍


Posted in HTML / CSS onJune 09, 2013

原文:
http://www.lifelaf.com/blog/?p=371
本文翻译自Steve Fulton & Jeff Fulton HTML5 Canvas, Chapter 2, “Using Paths to Create Lines”

对于HTML5 Canvas,我们可以使用“路径”来描画任何图形。路径,简单来说就是一系列的点以及连接这些点的线。任何Canvas上下文只会有一个“当前路径”,而当context.save()调用时,该“当前路径”并不会被保存。

路径的开始与结束

调用beginPath()可以开始一个路径,而调用closePath()则会令该路径结束。如果连接路径中的点,那么这种连接就构成了一个“子路径”。如果“子路径”中最后一个点与其自身的第一个点相连,我们就认为该“子路径”是“闭合”的。

线条的描绘

最基本的路径操作由反复调用moveTo()和lineTo()命令组成。比如以下这个例子:

复制代码
代码如下:

function drawScreen() {
context.strokeStyle = "black";
context.lineWidth = 10;
context.lineCap = 'square';
context.beginPath();
context.moveTo(20, 0);
context.lineTo(100, 0);
context.stroke();
context.closePath();
}

在上面的例子中,我们描画了一条水平的、宽度为10个像素的线段;与此同时,我们还设定了lineCap与strokeStyle属性。以下是一些常用的属性列表:

lineCap
lineCap定义了在Canvas中线段两头的样式,可设置为以下三个值中的一个:

butt。默认值;在线段的两头添加平直边缘。
round。在线段的两头各添加一个半圆形线帽。线帽直径等于线段的宽度。
square。在线段的两头添加正方形线帽。线帽边长等于线段的宽度。
lineJoin
lineJoin定义了两条线段相交处的弯角样式。以下为三个可选的值:

miter。默认值;创建一个尖角。可以通过设置miterLimit属性来对尖角长度进行限制 — miterLimit为尖角长度和线条宽度之比的最大值,默认为10。
bevel。创建一个斜角。
round。创建一个圆角。
lineWidth
lineWidth定义了线条的粗细,默认为1.0。

strokeStyle
strokeStyle定义了用于渲染线条的颜色等样式。

译注:当lineJoin设定为miter,但是尖角长度超过了miterLimit的限制时,Canvas将显示“bevel”弯角效果。

HTML / CSS 相关文章推荐
css3强大的动画效果animate使用说明及浏览器兼容介绍
Jan 09 HTML / CSS
纯css3实现鼠标经过图片显示描述的动画效果
Sep 01 HTML / CSS
CSS3简单实现照片墙
Dec 12 HTML / CSS
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
Jan 06 HTML / CSS
详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用
Aug 24 HTML / CSS
详解HTML5 LocalStorage 本地存储
Dec 23 HTML / CSS
video结合canvas实现视频在线截图功能
Jun 25 HTML / CSS
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
Jun 04 HTML / CSS
简述Html5 IphoneX 适配方法
Feb 08 HTML / CSS
如何用canvas实现在线签名的示例代码
Jul 10 HTML / CSS
HTML页面滚动时部分内容位置固定不滚动的实现
Apr 14 HTML / CSS
Css预编语言及区别详解
Apr 25 HTML / CSS
html5的画布canvas——画出简单的矩形、三角形实例代码
Jun 09 #HTML / CSS
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
Jun 09 #HTML / CSS
HTML5视频支持检测(检查浏览器是否支持视频播放)
Jun 08 #HTML / CSS
HTML5中如何显示视频呢 HTML5视频播放demo
Jun 08 #HTML / CSS
HTML5使用DOM进行自定义控制示例代码
Jun 08 #HTML / CSS
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
Jun 06 #HTML / CSS
将HTML5 Canvas的内容保存为图片借助toDataURL实现
May 20 #HTML / CSS
You might like
PHP常用函数总结(180多个)
2016/12/25 PHP
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
JavaScript 字符串乘法
2009/08/20 Javascript
javascript 函数参数限制说明
2010/11/19 Javascript
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
jq选项卡鼠标延迟的插件实例
2013/05/13 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
JavaScript学习笔记之数组去重
2016/03/23 Javascript
BootStrap制作导航条实例代码
2016/05/06 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
webpack4的迁移的使用方法
2018/05/25 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
js实现车辆管理系统
2020/08/26 Javascript
简述Python中的进程、线程、协程
2016/03/18 Python
Python常用的json标准库
2019/02/19 Python
Python字符串匹配之6种方法的使用详解
2019/04/08 Python
详解python和matlab的优势与区别
2019/06/28 Python
python字符串下标与切片及使用方法
2020/02/13 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
python suds访问webservice服务实现
2020/06/26 Python
详解Python 循环嵌套
2020/07/09 Python
Python 防止死锁的方法
2020/07/29 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
Python图像读写方法对比
2020/11/16 Python
Stokke美国官方网店:高级儿童家具、推车、汽车座椅和配件
2020/06/06 全球购物
描述RIP和OSPF区别以及特点
2015/01/17 面试题
毕业生求职简历中的自我评价
2013/10/18 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
银行自荐信范文
2015/03/25 职场文书
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
2021/04/06 Python
浅谈如何提高PHP代码质量之端到端集成测试
2021/05/28 PHP
教你怎么用Python实现GIF动图的提取及合成
2021/06/15 Python
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python