(18)HTML5-控制图形的变形
来源:互联网 发布:大学英语听力软件 编辑:程序博客网 时间:2024/06/12 01:24
介绍完绘制简单几何图形的函数后,接着来介绍如何使用javascript控制图形的变形,例如位移(translate),旋转(rotate)和缩放(scale)等,在游戏中通常会使用到这些变形方法。
{translate}
位移方法可以直接对画布的x,y坐标进行移动。所谓对画布进行移动,也就是原本画布定义的原点坐标(0,0)在画布的左上角,当使用位移方法后,原点坐标将会重新定义成坐标(x,y)的位置,后续绘制的图形将会把坐标(x,y)认作为原点坐标(0,0).
<!DOCTYPE html> <head> <meta charset="utf-8"/> <style> canvas{ border:1px solid black; } </style> <script> function draw(){ var canvas=document.getElementById('tutorial'); var ctx = canvas.getContext('2d'); ctx.fillRect(0,0,50,50); ctx.translate(100,100); ctx.fillRect(0,0,50,50); } </script> </head> <body onload="draw()"> <canvas id="tutorial" width="300" height="300">浏览器不支持画布功能</canvas> </body></html>
与translate()函数一样,rotate()函数以画布原点w为中心来顺时针旋转画布,旋转角度的计算方法与arc()函数的弧度计算方法相同(弧度=Math.PI*角度/180).若想要改变旋转的原点,可以配合translate()函数先重新定义画布的原点再进行旋转。通过rotate指令设置画布原点的旋转角度为20°,之后所绘制的图形都将会顺时针旋转20°后再绘制。
<!DOCTYPE html> <head> <meta charset="utf-8"/> <style> canvas{ border:1px solid black; } </style> <script> function draw(){ var canvas=document.getElementById('tutorial'); var ctx = canvas.getContext('2d'); ctx.rotate(20*Math.PI/180); ctx.fillRect(50,20,100,50); } </script> </head> <body onload="draw()"> <canvas id="tutorial" width="300" height="300">浏览器不支持画布功能</canvas> </body></html>
缩放指令可以改变画布中网格的比例,原本的基本单位为1pixel,经过缩放指令的变形后,可分别对x轴和y轴的网格距离进行缩放。
<!DOCTYPE html> <head> <meta charset="utf-8"/> <style> canvas{ border:1px solid black; } </style> <script> function draw(){ var canvas=document.getElementById('tutorial'); var ctx = canvas.getContext('2d'); ctx.strokeRect(5,5,20,30); ctx.scale(2,2); ctx.strokeRect(5,5,20,30);//相对第一个矩形变大两倍 } </script> </head> <body onload="draw()"> <canvas id="tutorial" width="300" height="300">浏览器不支持画布功能</canvas> </body></html>
<!DOCTYPE html> <head> <meta charset="utf-8"/> <style> canvas{ border:1px solid black; } </style> <script> function draw(){ var canvas=document.getElementById('tutorial'); var ctx = canvas.getContext('2d'); ctx.save(); ctx.translate(50,50); ctx.save(); ctx.rotate(Math.PI*20/180); ctx.fillStyle='blue'; ctx.fillRect(10,10,50,50); ctx.restore(); ctx.fillStyle='red'; ctx.fillRect(10,10,50,50); ctx.restore(); ctx.fillStyle='yellow'; ctx.fillRect(10,10,50,50); } </script> </head> <body onload="draw()"> <canvas id="tutorial" width="450" height="400">浏览器不支持画布功能</canvas> </body></html>
0 0
- (18)HTML5-控制图形的变形
- 【HTML5】图形变形
- html5绘制变形图形-变换坐标原点
- Html5 canvas学习5-图形变形:缩放 旋转 平移 变形
- html5 canvas实例 绘制变形图形 径向渐变
- 平面图形任意变形问题的解决方案
- HTML5学习笔记14-Canvas绘制渐变图形与绘制变形图形
- html5绘制精美的图形
- HTML5边玩边学(6):汽车人,变形......
- GDI+画曲线外型的变形文字(可用于图形验证码)
- 图形处理(五)基于旋转不变量的网格变形-Siggraph 2007
- 图形处理(五)基于旋转不变量的网格变形-Siggraph 2007
- 图形处理(十三)基于可变形模板的三维人脸重建-学习笔记
- html绘制变形图形
- html5页面,背景是一个整体的图片,键盘弹出,页面变形(页面img压缩)
- 图形处理相关资源(面部识别、姿态估计、变形、、、)
- 图形处理相关资源(面部识别、姿态估计、变形、、、)
- 图形处理(三)简单拉普拉斯网格变形-Siggraph 2004
- app白天夜间模式切换
- C# alias关键字的作用
- Hadoop eclipse开发解决Call to localhost/127.0.0.1:9000 failed on local exception: java.io.EOFException
- 6.Java基础:常见IO流----->字节流:FileInputStream、FileOutputStream
- 移动端开发实战经验
- (18)HTML5-控制图形的变形
- 用一个线程池执行多个任务
- web前端 | 如何选择撸码神器
- BitmapFactor.decodeByteArray方法导致OOM
- WPF中的窗口的生命周期
- git format-patch生成补丁命令详解
- fastjson解析、自定义seekBar的onTouchEvent、ScrollView或者ListView的拖拽阴影笔记
- Kali Linux 2016.2初体验使用总结
- 电路与Multisim 有极性的电容在哪里