HTML5 canvas基本绘图之绘制线条


Posted in HTML / CSS onJune 27, 2016

<canvas></canvas>是HTML5中新增的标签,用于绘制图形,实际上,这个标签和其他的标签一样,其特殊之处在于该标签可以获取一个CanvasRenderingContext2D对象,我们可以通过JavaScript脚本来控制该对象进行绘图。

<canvas></canvas>只是一个绘制图形的容器,除了id、class、style等属性外,还有height和width属性。在<canvas>>元素上绘图主要有三步:

1.获取<canvas>元素对应的DOM对象,这是一个Canvas对象;
2.调用Canvas对象的getContext()方法,得到一个CanvasRenderingContext2D对象;
3.调用CanvasRenderingContext2D对象进行绘图。

线条属性

除了上面用到的lineWidth属性,线条还有以下几个属性:

 •lineCap 属性设置或返回线条末端线帽的样式,可以取以下几个值:
“butt” 向线条的每个末端添加平直的边缘(默认);
“round” 向线条的每个末端添加圆形线帽;
“square” 向线条的每个末端添加正方形线帽。

 •lineJoin 属性当两条线交汇时设置或返回所创建边角的类型,可以取以下几个值:
“miter” 创建尖角(默认);
“bevel” 创建斜角;
“round” 创建圆角。

 •miterLimit 属性设置或返回最大斜接长度(默认为10)。斜接长度指的是在两条线交汇处内角和外角之间的距离。只有当 lineJoin 属性为 “miter” 时,miterLimit 才有效。 

JavaScript Code复制内容到剪贴板

  1. var canvas = document.getElementById("canvas");   
  2.     var context = canvas.getContext("2d");   
  3.     //测试lineCap属性   
  4.     //设置基准线便于观察   
  5.     context.moveTo(10,10);   
  6.     context.lineTo(10,200);   
  7.     context.moveTo(200,10);   
  8.     context.lineTo(200,200);   
  9.     context.lineWidth="1";   
  10.     context.stroke();   
  11.     //butt   
  12.     context.beginPath();   
  13.     context.moveTo(10,50);   
  14.     context.lineTo(200,50);   
  15.     context.lineCap="butt";   
  16.     context.lineWidth="10";   
  17.     context.stroke();   
  18.     //round   
  19.     context.beginPath();   
  20.     context.moveTo(10,100);   
  21.     context.lineTo(200,100);   
  22.     context.lineCap="round";   
  23.     context.lineWidth="10";   
  24.     context.stroke();   
  25.     //square   
  26.     context.beginPath();   
  27.     context.moveTo(10,150);   
  28.     context.lineTo(200,150);   
  29.     context.lineCap="square";   
  30.     context.lineWidth="10";   
  31.     context.stroke();   
  32.   
  33.     //测试linJoin属性   
  34.     //miter   
  35.     context.beginPath();   
  36.     context.moveTo(300,50);   
  37.     context.lineTo(450,100);   
  38.     context.lineTo(300,150);   
  39.     context.lineJoin="miter";   
  40.     context.lineWidth="10";   
  41.     context.stroke();   
  42.     //round   
  43.     context.beginPath();   
  44.     context.moveTo(400,50);   
  45.     context.lineTo(550,100);   
  46.     context.lineTo(400,150);   
  47.     context.lineJoin="round";   
  48.     context.lineWidth="10";   
  49.     context.stroke();   
  50.     //square   
  51.     context.beginPath();   
  52.     context.moveTo(500,50);   
  53.     context.lineTo(650,100);   
  54.     context.lineTo(500,150);   
  55.     context.lineJoin="bevel";   
  56.     context.lineWidth="10";   
  57.     context.stroke();   
  58.   
  59.     //测试miterLimit属性   
  60.     context.beginPath();   
  61.     context.moveTo(700,50);   
  62.     context.lineTo(850,100);   
  63.     context.lineTo(700,150);   
  64.     context.lineJoin="miter";   
  65.     context.miterLimit="2";   
  66.     context.lineWidth="10";   
  67.     context.strokeStyle="#2913EC";   
  68.     context.stroke();   
  69.   

各属性的不同取值的效果如下:

HTML5 canvas基本绘图之绘制线条

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
css3动画过渡实现鼠标跟随导航效果
Feb 08 HTML / CSS
CSS3实现多背景展示效果通过CSS3定位多张背景
Aug 10 HTML / CSS
css3动画效果小结(推荐)
Jul 25 HTML / CSS
利用CSS3制作简单的3d半透明立方体图片展示
Mar 25 HTML / CSS
CSS3 实现弹幕的示例代码
Aug 07 HTML / CSS
简单几步用纯CSS3实现3D翻转效果
Jan 17 HTML / CSS
html5应用缓存_动力节点Java学院整理
Jul 13 HTML / CSS
html5构建触屏网站之网站尺寸探讨
Jan 07 HTML / CSS
html5 Canvas画图教程(1)—画图的基本常识
Jan 09 HTML / CSS
实例讲解利用HTML5 Canvas API操作图形旋转的方法
Mar 22 HTML / CSS
HTML5中form如何关闭自动完成功能的方法
Jul 02 HTML / CSS
详解CSS故障艺术
May 25 HTML / CSS
HTML5 canvas基本绘图之绘制五角星
Jun 27 #HTML / CSS
浅析HTML5中header标签的用法
Jun 24 #HTML / CSS
HTML5中使用postMessage实现两个网页间传递数据
Jun 22 #HTML / CSS
基于HTML5 的人脸识别活体认证的实现方法
Jun 22 #HTML / CSS
调用HTML5的Canvas API绘制图形的快速入门指南
Jun 17 #HTML / CSS
html5 canvas绘制矩形和圆形的实例代码
Jun 16 #HTML / CSS
浅谈html5增强的页面元素
Jun 14 #HTML / CSS
You might like
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
PHP获取Exif缩略图的方法
2015/07/13 PHP
Yii2中DropDownList简单用法示例
2016/07/18 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
2016/12/23 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
跨浏览器的设置innerHTML方法
2006/09/18 Javascript
JavaScript 原型与继承说明
2010/06/09 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
使用jQuery判断IE浏览器版本的代码
2014/06/14 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
JS实现简单的键盘打字的效果
2015/04/24 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
理解javascript定时器中的单线程
2016/02/23 Javascript
jQuery实现查找链接文字替换属性的方法
2016/06/27 Javascript
nodejs和C语言插入mysql数据库乱码问题的解决方法
2017/04/14 NodeJs
React Native中Navigator的使用方法示例
2017/10/13 Javascript
基于JavaScript实现抽奖系统
2018/01/16 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
2018/12/17 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
2013/11/27 Python
python列表的常用操作方法小结
2016/05/21 Python
巧用python和libnmapd,提取Nmap扫描结果
2016/08/23 Python
利用python画一颗心的方法示例
2017/01/31 Python
Python输入二维数组方法
2018/04/13 Python
python模块smtplib学习
2018/05/22 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
详解python持久化文件读写
2019/04/06 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
德国综合购物网站:OTTO
2018/11/13 全球购物
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
本科毕业生应聘自荐信范文
2014/06/26 职场文书
停发工资证明范本
2015/06/12 职场文书
律师催款函范文
2015/06/24 职场文书
SQLServer中exists和except用法介绍
2021/12/04 SQL Server
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python