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+DIV实现漂亮的动画彩色标签
Jun 16 HTML / CSS
CSS3教程(1):什么是CSS3
Apr 02 HTML / CSS
CSS3中31种选择器使用方法教程
Dec 05 HTML / CSS
纯CSS实现的大小渐变、渐远效果
Apr 15 HTML / CSS
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
Nov 05 HTML / CSS
详解HTML5中的标签
Jun 19 HTML / CSS
HTML5 placeholder属性详解
Jun 22 HTML / CSS
HTML5 Canvas绘制文本及图片的基础教程
Mar 14 HTML / CSS
h5调用摄像头的实现方法
Jun 01 HTML / CSS
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
Sep 19 HTML / CSS
分享CSS盒子模型隐藏的几种方式
Feb 28 HTML / CSS
css常用字体属性与背景属性介绍
Feb 28 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
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
2006/10/09 PHP
php商品对比功能代码分享
2015/09/24 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
JQuery 弹出框定位实现方法
2010/12/02 Javascript
javascript模版引擎-tmpl的bug修复与性能优化分析
2011/10/23 Javascript
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
jQuery中delegate()方法用法实例
2015/01/19 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
微信小程序 地图map实例详解
2017/06/07 Javascript
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
使vue实现jQuery调用的两种方法
2019/05/12 jQuery
前端Electron新手入门教程详解
2019/06/21 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
[01:46]TI4西雅图DOTA2前线报道 中国选手抱团调时差
2014/07/08 DOTA
python实现跨文件全局变量的方法
2014/07/07 Python
Python中使用platform模块获取系统信息的用法教程
2016/07/08 Python
python中logging包的使用总结
2018/02/28 Python
python3.x上post发送json数据
2018/03/04 Python
python 编写简单网页服务器的实例
2018/06/01 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
Python实现自动签到脚本功能
2020/08/20 Python
怎样比较两个类型为String的字符串
2016/08/17 面试题
采用怎样的方法保证数据的完整性
2013/12/02 面试题
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
理工大学毕业生自荐信
2013/11/01 职场文书
如何填写个人简历自我评价
2013/12/10 职场文书
特此通知格式
2015/04/27 职场文书
员工年度工作总结2015
2015/05/18 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书