html矩形坐标理解,HTML canvas中translate()与rotate()的理解

本文介绍了HTML5 Canvas中translate和rotate函数的使用,通过坐标系的变化来理解图形的平移和旋转。内容包括translate如何移动坐标系,rotate如何以原点为中心进行旋转,并通过实例解释了如何保存和恢复坐标系状态,以及如何以图形自身中心进行旋转。文章强调通过坐标系来理解这两个函数的重要性,尤其在需要对图形进行精确操作的场景下。
摘要由CSDN通过智能技术生成

首先,当我们在页面上初始化canvas时,相当于在上面放了一块画布,这块画布我们可以理解为上面有一个坐标系(如下图),左上角是原点,往右是X轴的正方向,往下是Y轴的正方向,我们在画布上绘制的内容都是基于这个坐标系完成,但是有时候我们需要对绘制的内容进行调整,例如将上面的一个图形旋转某个角度,或者在画布正中心画一个图形,我们就可以通过translate和rotate将坐标系进行移动之后再进行绘制.

还有,rotate的旋转是以原点为基准进行旋转,,这一点很重要

1460000013969876

功能与参数介绍

函数

参数

描述

translate

dx,dx

将坐标系在X轴和Y轴移动的距离

rotate

angle

坐标系旋转的角度,顺时针为正,,逆时针为负

save

保存当前坐标系的状态

restore

恢复上一次坐标系状态

当我们不对画布进行旋转和移动的时候,在上面绘制一个矩形,是这样子的

1460000013969877

1460000013969878

可以看到此时是基于左上角进行绘制的,如果我们用translate将它向右和向下移动200px和100px呢

1460000013969879

1460000013969880

可以看到,画布位置没有改变,我们移动的只是坐标系,如果我们继续在上面绘制图形,仍然是以现在这个位置的坐标系为准,如果我们只想在这个位置画一次之后就恢复坐标系原始位置,我们应该在移动之前调用save()保存状态,绘制后调用restore()恢复.

1460000013969881

如果我们想将最开始的矩形以自身中心旋转90°呢,想看代码和效果图

1460000013969882

1460000013969883

emmmm...没有计算好,导致有点跑偏,但是它还是以自己为中心转了90°,但是没事,不影响理解rorate和translate这两个函数配合的理解。

首先看红色框中的第一行代码,执行后坐标系是这样的

1460000013969884

第二行代码旋转后是这样的

1460000013969885

注意看此时X轴和Y轴已经改变,以及正方向的方向。第三行代码执行后如下

1460000013969886

为什么会往右上方跑呢?因为我们translate中的参数是负数,而此时坐标轴的正值方向是左边和下边,所以是往右边和上边跑

为什么原点会跑出画布之外?因为X轴移动的距离是width/2,而竖直方向空间不足,就继续往上走了。

通过坐标系来说明这两个函数主要是因为最近做的一个项目中需要将画布上面绘制的图片以图片自身为中心旋转90°或者180°,而看了许多博客后比较少通过坐标系来讲解这两个函数,尝试了很久之后发现通过坐标系来理解虽然麻烦,但是感觉简单点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值