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实现简单的checkbox复选框和radio单选框
Nov 05 HTML / CSS
使用css3实现的tab选项卡代码分享
Dec 09 HTML / CSS
CSS3实现多背景模拟动态边框的效果
Nov 08 HTML / CSS
CSS3标注引用的出处和来源的方法
Feb 25 HTML / CSS
解决CSS3 transition-delay 属性默认值0不带单位失效的问题
Oct 29 HTML / CSS
纯CSS3实现圆圈动态发光特效动画的示例代码
Mar 08 HTML / CSS
input元素的url类型和email类型简介
Jul 11 HTML / CSS
纯html5+css3下拉导航菜单实现代码
Mar 18 HTML / CSS
html5 拖拽上传图片实例演示
Apr 01 HTML / CSS
HTML5声音录制/播放功能的实现代码
May 03 HTML / CSS
Html5 页面适配iPhoneX(就是那么简单)
Sep 05 HTML / CSS
通过canvas转换颜色为RGBA格式及性能问题的解决
Nov 22 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
一个PHP操作Access类(PHP+ODBC+Access)
2007/01/02 PHP
php获得当前的脚本网址
2007/12/10 PHP
php加速器eAccelerator的配置参数、API详解
2014/05/05 PHP
PHP获取文件扩展名的4种方法
2015/11/24 PHP
PHP设计模式之模板方法模式实例浅析
2018/12/20 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
高效率JavaScript编写技巧整理
2013/08/23 Javascript
浅析jquery某一元素重复绑定的问题
2014/01/03 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
2014/04/04 Javascript
js实现简单秒表走动的时钟特效
2020/03/25 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
2016/04/01 Javascript
纯JavaScript 实现flappy bird小游戏实例代码
2016/09/27 Javascript
基于Vue2的移动端开发环境搭建详解
2016/11/03 Javascript
jQuery复合事件结合toggle()方法的用法示例
2017/06/10 jQuery
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
Vue实战之vue登录验证的实现代码
2017/10/31 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
JS如何生成随机验证码
2020/03/02 Javascript
微信小程序用户登录和登录态维护的实现
2020/12/10 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第一场 1月24日
2021/03/11 DOTA
[41:52]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第二场 2月22日
2021/03/11 DOTA
Python绑定方法与非绑定方法详解
2017/08/18 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
浅谈PYTHON 关于文件的操作
2019/03/19 Python
使用Python发现隐藏的wifi
2020/03/04 Python
Python基于os.environ从windows获取环境变量
2020/06/09 Python
CSS实现雨滴动画效果的实例代码
2019/10/08 HTML / CSS
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
2013/01/30 HTML / CSS
天网面试题
2013/04/07 面试题
《凡卡》教学反思
2014/04/09 职场文书
公司请假条范文
2014/04/11 职场文书
中班上学期幼儿评语
2014/04/30 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
2014领导干部学习焦裕禄同志先进事迹思想汇报
2014/09/19 职场文书
焦点访谈观后感
2015/06/11 职场文书