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创建动态菜单效果
Jul 10 HTML / CSS
纯css3使用vw和vh实现自适应的方法
Feb 09 HTML / CSS
如何使用css3实现一个类在线直播的队列动画的示例代码
Jun 17 HTML / CSS
HTML5-WebSocket实现聊天室示例
Dec 15 HTML / CSS
HTML5的video标签的浏览器兼容性增强方案分享
May 19 HTML / CSS
HTML5移动端开发遇见的东西
Oct 11 HTML / CSS
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
Apr 24 HTML / CSS
HTML5实现经典坦克大战坦克乱走还能发出一个子弹
Sep 02 HTML / CSS
详解HTML5中的picture元素响应式处理图片
Jan 03 HTML / CSS
HTML5拍照和摄像机功能实战详解
Jan 24 HTML / CSS
详解window.open被浏览器拦截的解决方案
Jul 18 HTML / CSS
canvas绘制太极图的实现示例
Apr 29 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获取提交内容的实现方法
2016/05/25 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
thinkphp5使用无限极分类
2019/02/18 PHP
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
基于jquery实现智能提示控件intellSeach.js
2016/03/17 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
[01:20]DOTA2更新全新英雄 天涯墨客现已加入游戏
2018/08/25 DOTA
零基础写python爬虫之爬虫的定义及URL构成
2014/11/04 Python
Python创建xml文件示例
2017/03/22 Python
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
关于Numpy中的行向量和列向量详解
2019/11/30 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
python语言中有算法吗
2020/06/16 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
2021/01/12 Python
python解包用法详解
2021/02/17 Python
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
以工厂直接定价的传奇性能:Ben Hogan Golf
2019/01/04 全球购物
银行毕业实习自我鉴定
2013/09/19 职场文书
事业单位请假制度
2014/01/13 职场文书
放飞蜻蜓反思
2014/02/05 职场文书
大学学雷锋活动总结
2014/06/26 职场文书
受资助学生感谢信
2015/01/21 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
56句经典英文座右铭
2019/08/09 职场文书
MySQL主从切换的超详细步骤
2022/06/28 MySQL