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对象进行绘图。

图形变换

平移:context.translate(x,y),接收参数分别为原点在x轴方向平移x,在y轴方向平移y。

缩放:context.scale(x,y),接收参数分别为x坐标轴按x比例缩放,y坐标轴按y比例缩放。

旋转:context.rotate(angle),接收参数是坐标轴旋转的角度。

需要说明的是,对图形进行变化后,接下来的一次绘图是紧接着上一次的状态的,所以如果需要回到初始状态,要用到context.save();和context.restore();来保存和恢复当前状态:

JavaScript Code复制内容到剪贴板
  1. var canvas = document.getElementById("canvas");   
  2. var context = canvas.getContext("2d");   
  3.   
  4. //translate()   
  5. context.save();   
  6. context.fillStyle = "#1424DE";   
  7. context.translate(10,10);   
  8. context.fillRect(0,0,200,200);   
  9. context.restore();   
  10.   
  11. //scale()   
  12. context.save();   
  13. context.fillStyle = "#F5270B";   
  14. context.scale(0.5,0.5);   
  15. context.fillRect(500,50,200,200);   
  16. context.restore();   
  17. //rotate()   
  18.   
  19. context.save();   
  20. context.fillStyle = "#18EB0F";   
  21. context.rotate(Math.PI / 4);   
  22. context.fillRect(300,10,200,200);   
  23. context.restore();   

效果如下:

HTML5 canvas基本绘图之图形变换

另外一个跟图形变换相关的是:矩阵变换 :context.transform(a, b, c, d, e, f, g)。参数的含义如下:

a 水平缩放 ( 默认为1 )
b 水平倾斜 ( 默认为 0 )
c 垂直倾斜 ( 默认为 0 )
d 垂直缩放 ( 默认为1 )
e 水平位移 ( 默认为 0 )
f 垂直位移 ( 默认为 0 )

读者可以自行验证其各个参数的效果,这里就不一一介绍了。

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

HTML / CSS 相关文章推荐
CSS3 3D位移translate效果实例介绍
May 03 HTML / CSS
CSS中几个与换行有关的属性简明总结
Apr 15 HTML / CSS
一款纯css3实现的tab选项卡的实列教程
Dec 11 HTML / CSS
基于css3的属性transition制作菜单导航效果
Sep 01 HTML / CSS
css3 clip实现圆环进度条的示例代码
Feb 07 HTML / CSS
css3实现3D文本悬停改变效果的示例代码
Jan 16 HTML / CSS
HTML5中使用postMessage实现Ajax跨域请求的方法
Apr 19 HTML / CSS
HTML5 解析规则分析
Aug 14 HTML / CSS
html5+css3气泡组件的实现
Nov 21 HTML / CSS
详解使用HTML5 Canvas创建动态粒子网格动画
Dec 14 HTML / CSS
CSS3 制作的悬停缩放特效
Apr 13 HTML / CSS
css3中transform属性实现的4种功能
Aug 07 HTML / CSS
HTML5 canvas基本绘图之填充样式实现
Jun 27 #HTML / CSS
HTML5 canvas基本绘图之绘制线条
Jun 27 #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
You might like
神族 Protoss 历史背景
2020/03/14 星际争霸
php 动态多文件上传
2009/01/18 PHP
php有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
ExtJs之带图片的下拉列表框插件
2010/03/04 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
js调用后台servlet方法实例
2013/06/09 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
javascript替换已有元素replaceChild()使用介绍
2014/04/03 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
JavaScript小技巧整理
2015/12/30 Javascript
JS中传递参数的几种不同方法比较
2017/01/20 Javascript
vue引入swiper插件的使用实例
2017/07/19 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
nuxt框架中对vuex进行模块化设置的实现方法
2019/09/06 Javascript
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
[01:00:04]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第二局
2016/02/26 DOTA
Python编写电话薄实现增删改查功能
2016/05/07 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
PyCharm中代码字体大小调整方法
2019/07/29 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
HTML5-WebSocket实现聊天室示例
2016/12/15 HTML / CSS
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
2013/03/19 面试题
武汉英思工程科技有限公司&ndash;ORACLE面试测试题目
2012/04/30 面试题
艺术设计专业个人求职信范文
2013/12/11 职场文书
学年末自我鉴定
2014/01/21 职场文书
党员创先争优心得体会
2014/09/11 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
煤矿安全生产工作总结
2015/08/13 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
golang中的空slice案例
2021/04/27 Golang
python中__slots__节约内存的具体做法
2021/07/04 Python