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特性绘制简易版围棋效果
Sep 28 HTML / CSS
CSS3盒子模型详解
Apr 24 HTML / CSS
html5+css3气泡组件的实现
Nov 21 HTML / CSS
利用纯css3实现的文字亮光特效的代码演示
Nov 27 HTML / CSS
CSS3中几个新增加的盒模型属性使用教程
Mar 01 HTML / CSS
10分钟理解CSS3 Grid布局
Dec 20 HTML / CSS
HTML5移动端开发遇见的东西
Oct 11 HTML / CSS
前端实现打印图像功能
Aug 27 HTML / CSS
详解使用postMessage解决iframe跨域通信问题
Nov 01 HTML / CSS
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
May 14 HTML / CSS
简单实现一个手持弹幕功能+文字抖动特效
Mar 31 HTML / CSS
HTML速写之Emmet语法规则的实现
Apr 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
php计算十二星座的函数代码
2012/08/21 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
PHP加密解密字符串汇总
2015/04/26 PHP
PHP浮点比较大小的方法
2016/02/14 PHP
PHP实现的策略模式简单示例
2017/08/25 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
PDO实现学生管理系统
2020/03/21 PHP
jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
2008/12/25 Javascript
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
JavaScript快速检测浏览器对CSS3特性的支持情况
2012/09/26 Javascript
jquery中EasyUI实现同步树
2015/03/01 Javascript
JS中Location使用详解
2015/05/12 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
js创建对象的方法汇总
2016/01/07 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
Python实现计算最小编辑距离
2016/03/17 Python
Python对象转JSON字符串的方法
2016/04/27 Python
python 文件操作删除某行的实例
2017/09/04 Python
python的dataframe和matrix的互换方法
2018/04/11 Python
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
Python字符串中删除特定字符的方法
2020/01/15 Python
python正则表达式实例代码
2020/03/03 Python
Python面向对象魔法方法和单例模块代码实例
2020/03/25 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
HTML5 video进入全屏和退出全屏的实现方法
2020/07/28 HTML / CSS
新闻工作者先进事迹
2014/05/26 职场文书
美元符号 $
2022/02/17 杂记
Java 超详细讲解hashCode方法
2022/04/07 Java/Android