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和HTML5的支持状况
Oct 31 HTML / CSS
使用简单的CSS3属性实现炫酷读者墙效果
Jan 08 HTML / CSS
让IE支持CSS3的不完全兼容方案
Sep 19 HTML / CSS
使用CSS3实现圆角,阴影,透明
Dec 23 HTML / CSS
利用CSS3实现单选框动画特效示例代码
Sep 26 HTML / CSS
浅析CSS3 中的 transition,transform,translate之间区别和作用
Mar 26 HTML / CSS
HTML5的video标签的浏览器兼容性增强方案分享
May 19 HTML / CSS
HTML5上传文件显示进度的实现代码
Aug 30 HTML / CSS
10个最常见的HTML5面试题 附答案
Jun 06 HTML / CSS
amazeui时间组件的实现示例
Aug 18 HTML / CSS
CSS预处理框架——Stylus
Apr 21 HTML / CSS
使用CSS定位HTML元素的实现方法
Jul 07 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中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
php目录操作实例代码
2014/02/21 PHP
php将图片保存入mysql数据库失败的解决方法
2014/12/27 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
PHP获取当前时间不准确问题解决方案
2020/08/14 PHP
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
2013/07/10 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
中止javascript执行的方法
2014/02/14 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
2017/04/20 Javascript
轻松解决JavaScript定时器越走越快的问题
2019/05/13 Javascript
改进 JavaScript 和 Rust 的互操作性并深入认识 wasm-bindgen 组件
2019/07/13 Javascript
微信小程序复选框实现多选一功能过程解析
2020/02/14 Javascript
微信小程序实现搜索功能
2020/03/10 Javascript
获取Django项目的全部url方法详解
2017/10/26 Python
python tensorflow基于cnn实现手写数字识别
2018/01/01 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
2019/05/27 Python
Python循环中else,break和continue的用法实例详解
2019/07/11 Python
Python八皇后问题解答过程详解
2019/07/29 Python
python多进程重复加载的解决方式
2019/12/13 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
什么是smarty? Smarty的优点是什么?
2013/08/11 面试题
高中生学期学习自我评价
2014/02/24 职场文书
yy生日主持词
2014/03/20 职场文书
财务内勤岗位职责
2014/04/17 职场文书
2014年涉外离婚协议书范本
2014/11/20 职场文书
人力资源部岗位职责
2015/02/11 职场文书
终止劳动合同通知书
2015/04/16 职场文书
蜗居观后感
2015/06/11 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python