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.0 图形构成实例练习二
Mar 19 HTML / CSS
css3实现顶部社会化分享按钮示例
May 06 HTML / CSS
html5+css3气泡组件的实现
Nov 21 HTML / CSS
使用CSS3编写灰阶滤镜来制作黑白照片效果的方法
May 09 HTML / CSS
利用CSS3实现平移动画效果示例代码
Oct 12 HTML / CSS
使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
Sep 15 HTML / CSS
HTML5全屏(Fullscreen)API详细介绍
Apr 24 HTML / CSS
HTML5手机端弹出遮罩菜单特效代码
Jan 27 HTML / CSS
【HTML5】Canvas绘制简单图片教程
May 13 HTML / CSS
HTML5实现直播间评论滚动效果的代码
May 27 HTML / CSS
sass 常用备忘案例详解
Sep 15 HTML / CSS
table不让td文字溢出操作方法
Dec 24 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
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
php文件系统处理方法小结
2016/05/23 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
PHP迭代器和生成器用法实例分析
2019/09/28 PHP
JS 强制设为首页的代码
2009/01/31 Javascript
Whatever:hover 无需javascript让IE支持丰富伪类
2010/06/29 Javascript
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
2013/06/06 Javascript
js有序数组的连接问题
2013/10/01 Javascript
jquery实现手风琴效果实例代码
2013/11/15 Javascript
js实现的点击div区域外隐藏div区域
2014/06/30 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
2014/12/28 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
jquery插件jquery.confirm弹出确认消息
2015/12/22 Javascript
解析javascript瀑布流原理实现图片滚动加载
2016/03/10 Javascript
Angular2 多级注入器详解及实例
2016/10/30 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
JS+HTML+CSS实现轮播效果
2017/11/28 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
2019/05/09 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
2019/05/10 Javascript
基于layui实现高级搜索(筛选)功能
2019/07/26 Javascript
[35:43]2018DOTA2亚洲邀请赛 4.1 小组赛B组 paiN vs Effect
2018/04/03 DOTA
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
python实现带错误处理功能的远程文件读取方法
2015/04/29 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
Django中间件拦截未登录url实例详解
2019/09/03 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
T3官网:头发造型工具
2019/12/26 全球购物
速卖通欧盟:Aliexpress EU
2020/08/19 全球购物
青年创业培训欢迎词
2014/01/08 职场文书
小学生开学第一课活动方案
2014/03/27 职场文书
外科护士长工作总结
2015/08/12 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书