html5有什么图像变换,HTML5 - Canvas的使用样例5(变换的使用)

1,变换介绍

变换,就是一种通过变化坐标系达到绘图目的的技术,具体有如下几种变换 :

(1)translate:平移变换

(2)scale:缩放变换

(3)rotate:旋转变换

(4)matrix:矩阵变换

2,平移变换(translate)

比如我们想要在三个地方绘制同样大小的正方形:

d5ec0710b7dd6a7bd08a9bc8da922fcd.png

可以调用三次rect(),每次都传入不同的起点位置:

var canvas = document.getElementById("myCanvas");

var context = canvas.getContext("2d");

context.lineWidth = 10;

context.strokeStyle = "#cd2828";

//在三个地方绘制同样大小(30*30)的正方形

context.rect(50, 50, 30, 30);

context.rect(100, 100, 30, 30);

context.rect(150, 150, 30, 30);

context.stroke();

也可以在同一个地方调用三次rect(),但每次都移动一下坐标系:

var canvas = document.getElementById("myCanvas");

var context = canvas.getContext("2d");

context.lineWidth = 10;

context.strokeStyle = "#cd2828";

//在(50,50)点绘制正方形

context.rect(50, 50, 30, 30);

//把坐标系向下、向右各移动50像素

context.translate(50, 50)

context.rect(50, 50, 30, 30);

//把坐标系继续向下、向右各移动50像素(变换是可以累积的)

context.translate(50, 50)

context.rect(50, 50, 30, 30);

context.stroke();

2,旋转变换(rotate)

下面通过绘制一系列旋转的正方形,生成类似方形螺线的图案。

fc3c5908a7dbe4a61438f283ee840f04.png

var canvas = document.getElementById("myCanvas");

var context = canvas.getContext("2d");

context.lineWidth = 4;

context.strokeStyle = "#cd2828";

//移动原点,接下来要围绕新原点旋转

context.translate(100, 100);

//绘制10个正方形

var copies = 10;

for(var i=1; i

//绘制正方形之前,先旋转坐标系

//旋转一周是2pi,因此每个正方形的旋转角度取决于要绘制的总数

context.rotate(2 * Math.PI * 1/(copies-1));

//绘制正方形

context.rect(0, 0, 60, 60);

}

context.stroke();

4,坐标系的保存与还原

(1)调用绘图上下文的save()方法可以保存坐标系当前的状态。然后调用restore()方法可以返回保存过的前一个状态。

(2)因为变换是累积的,我们在多步操作绘制复杂图形时,往往需要多次保存坐标系状态。如同浏览器历史记录一样,每次调用restore(),坐标系就会恢复到前一个最近的状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值