SVG 的平移、旋转和缩放

SVG中的平移、旋转和缩放在不同的参数条件下,体现出不同的效果:

1、如果直接用x、y指定了图形的坐标(在我的理解该坐标实际是图形相对坐标,如果没有通过transform属性设置坐标平移,该坐标是相对画布起始位置坐标,如果设置了坐标平移则为相对平移后坐标位置的偏移),所有的变形均受到x、y坐标值影响;如下代码示例:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="800" height="800">
    <g  transform="translate(100,100)scale(0.8,0.8)">       
        <rect width="100" height="50" fill="blue"></rect>
    </g>
    <rect x="50" y="50" transform="translate(200,200)scale(1.2,1.2)" width="200" height="50" fill="red" />   
</svg>

缩放倍数为1.2和1时实际看到的效果:受缩放的影响,矩形不仅长、宽跟随缩放系数变化,图形位置也跟随缩放系数变化,说明缩放系数要影响参数  x、y;相应的使用rotate参数时,也会受到x、y系数的影响。

建议:为保证图形变换效果,不要设置图形起始值,通过transform属性的translate参数设置图形相对坐标原点的平移位置即可;

2、旋转 :如果采用transform属性设置了translate参数,则旋转中心为translate设置位置,示例如下:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="800" height="800">
    <g  transform="translate(100,100)rotate(90)">
        <text fill="red">hello</text>
    </g> 
</svg>

当设置不同的旋转角度时,始终以坐标位置100,100为中心进行旋转,其中旋转按照rotate(angle,[x,y])格式设置参数,angle表示旋转的目标角度(不表示旋转角度哈,如:-90表示逆时针从0度位置逆时针方向选装90度,不是当前位置逆时针旋转90度),[x,y]表示旋转中心的相对坐标;如下示例代码:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="800" height="800">
	<g  transform="translate(200,200)rotate(90)">
		<rect width="200" height="100" fill="red" ></rect>
	</g>
</svg>

该示例代码的旋转中心为200,200,90度旋转完成后,矩形左上角坐标为(100,200),右上角坐标位置为(200,200)

如果设置translate(x1,y1)参数又设置了rotate的旋转中心参数,则实际的旋转中心为x1+x,y1+y,以下示例以矩形中心为中心点旋转的代码示例:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="800" height="800">
	<g  transform="translate(200,200)rotate(90,100 50)">
		<rect width="200" height="100" fill="red" ></rect>
	</g>
</svg>

旋转中心位置为:300,250

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值