一篇文章带你了解SVG 转换知识

简介: 一篇文章带你了解SVG 转换知识

image.png

SVG 转换在SVG图像中创建的形状。例如,移动,缩放和旋转形状。这是显示垂直或对角线文本的便捷方法。


一、转换简单示例


例:

<svg xmlns="http://www.w3.org/2000/svg"   xmlns:xlink="http://www.w3.org/1999/xlink">
   <rect x="50" y="50" height="110" width="110"         style="stroke:#ff0000; fill: #ccccff" transform="translate(30) rotate(45 50 50)">   </rect>   <text x="70" y="100" transform="translate(30) rotate(45 50 50)"   >nhooo.com</text></svg>

运行效果:

image.png

注:

<rect>元素的transform 和 <text>的transform属性。

该属性指定要应用于形状的变换。在此示例中,应用了平移和旋转。两者都将在本文后面解释。


二、哪些元素可以转换?


可以将变换应用于所有SVG形状。还可以将变换应用于<g>   元素,从而一次性有效地变换整个元素组。也可以变换渐变和填充图案。


三、转换函数


转换函数不会自行转换SVG形状,而是会转换该形状的基础坐标系。因此,即使宽度以倍数显示,宽度20乘以2的形状在逻辑上仍具有20的宽度。


1. 移动 translate()

translate()函数移动形状。将x 和 y 值传递给translate()的函数。

translate(50,25)

将形状沿x轴移动50个单位,并沿y轴移动25个单位。显示了两个位置相等且大小相等的形状,有无平移。

例:

<svg width="500" height="150"><rect x="20" y="20" width="50" height="50" style="fill: #cc3333" /><rect x="20" y="20" width="50" height="50" style="fill: #3333cc" transform="translate(75,25)"></rect></svg>

运行效果:

image.png

注

与第一个(红色)形状相比,第二个(蓝色)形状沿x轴移动75个单位,沿y轴移动25个单位。


2. 旋转 rotate()

rotate()函数围绕点0,0旋转形状。

显示一个矩形(轮廓)和旋转15度后的相等矩形(实心)。

<svg width="500" height="150"><rect x="20" y="20" width="40" height="40" style="stroke: #3333cc; fill:none;"></rect>
<rect x="20" y="20" width="40" height="40" style="fill: #3333cc" transform="rotate(15)"></rect></svg>

运行效果:

image.png

如果要绕除0,0以外的其他点旋转,则将该点的x和y坐标传递给transform函数。

显示了一个非旋转的矩形(轮廓)和一个相等的矩形(实心)围绕其中心旋转15度。

例:

<svg width="500" height="150"><rect x="20" y="20" width="40" height="40"     style="stroke: #3333cc; fill:none;"      ></rect>
<rect x="20" y="20" width="40" height="40"     style="fill: #3333cc"     transform="rotate(15, 40, 40)"      ></rect></svg>

运行效果:

image.png

所有旋转都是顺时针旋转,其度数从0到360。如果要逆时针旋转,请将负的度数传递给rotate()函数。


3. 缩放 scale()


3.1 scale()函数简介

scale()函数按比例放大或缩小形状。scale()函数可缩放形状尺寸及其位置坐标。因此,以20乘以2的比例缩放的宽度为20且高度为30的矩形位于20,20处,其宽度为40且高度为60。

scale()函数还可以缩放形状的笔触宽度。


3.2 案例

显示了一个位于10,0处,宽度为20且高度为20的矩形(蓝色),以及一个等比例的矩形(黑色),其缩放比例为2。

<svg width="500" height="150"><rect x="10" y="10" width="20" height="30" style="stroke: #3333cc; fill:none;"></rect>
<rect x="10" y="10" width="20" height="30" style="stroke: #000000; fill:none;" transform="scale(2)"></rect></svg>

运行效果:

image.png

注意

矩形的位置和大小是如何缩放的。

可以在x轴和y轴上按其他因子缩放形状。为此,可以向scale()函数提供x-scale和y-scale参数。

如下所示:

scale(2,3);

将沿x轴将形状缩放2倍,沿y轴将形状缩放3倍。

例:

<svg width="500" height="150"><rect x="10" y="10" width="20" height="30" style="stroke: #3333cc; fill:none;"></rect>
<rect x="10" y="10" width="20" height="30" style="stroke: #000000; fill:none;" transform="scale(2,3)"></rect></svg>

运行效果:

image.png

注意:

缩放后的矩形(黑色)的笔划宽度也是如何缩放的,并且在x轴和y轴上的缩放比例不同。


4. 偏斜 skew()

skewX()和skewY()函数偏斜x轴和y轴。实际上,这些函数会根据以度为单位指定的某个角度来倾斜给定的轴。

显示具有不同skewX()值的矩形的一些示例。

<svg width="500" height="150">      <rect x="10" y="10" width="20" height="30" style="stroke: #3333cc; fill:none;" />
      <rect x="50" y="10" width="20" height="30" style="stroke: #000000; fill:none;" transform="skewX(10)" />      <rect x="100" y="10" width="20" height="30" style="stroke: #000000; fill:none;" transform="skewX(45)" />      <rect x="150" y="10" width="20" height="30" style="stroke: #000000; fill:none;" transform="skewX(60)" />    </svg>

运行效果:

image.png

skewX()函数使垂直线看起来像是按给定角度旋转了。

因此,skewY()函数使水平线看起来像是旋转了给定角度。

例:

<svg width="500" height="150">      <rect x="10" y="10" width="20" height="30" style="stroke: #3333cc; fill:none;" />
      <rect x="50" y="10" width="20" height="30" style="stroke: #000000; fill:none;" transform="skewY(60)" />      <rect x="100" y="10" width="20" height="30" style="stroke: #000000; fill:none;" transform="skewY(45)" />      <rect x="150" y="10" width="20" height="30" style="stroke: #000000; fill:none;" transform="skewY(10)" /></svg>

image.png


四、总结


本文基于HTML基础,介绍了图像的转换。详细的介绍了如何运用转换函数,进行图像移动、缩放、转动、拉长或拉伸等一系列操作。通过案例的分析,丰富的效果图,能够让读者更好的理解。

希望能够帮助你更好的理解SVG中图像转换。

------------------- End -------------------

相关文章
为什么两个执行很快的SQL,union之后特别慢
UNION获取两个数据集并返回唯一重叠。换句话说,它花费时间去除重复。 所以如果只是想取两个SQL的结果,改成使用union all,不会有去重操作 如果还是想去重,可以在union all之后再包一层查询,使用distinct
|
安全 Java 网络安全
springcloud 入门(10) Spring Security 安全与权限(上)
springcloud 入门(10) Spring Security 安全与权限
1288 0
springcloud 入门(10) Spring Security 安全与权限(上)
|
Java Linux Maven
Springboot项目打包成jar运行2种方式
Springboot项目打包成jar运行2种方式
3590 0
|
7月前
|
存储 自然语言处理 搜索推荐
分布式搜索引擎:底层逻辑 + 实战
本文深入剖析分布式搜索引擎核心原理,涵盖倒排索引、分片机制、副本高可用、集群架构、分布式事务及相关性排序,结合ES 8.14+SpringBoot3实战,兼顾底层逻辑与生产优化,助开发者从“会用”进阶到“精通”。
410 2
|
人工智能 自然语言处理 计算机视觉
StarVector:图像秒变矢量代码!开源多模态模型让SVG生成告别手绘
StarVector是由ServiceNow Research等机构联合开发的开源多模态视觉语言模型,能够将图像和文本转换为可编辑的SVG矢量图形,支持1B和8B两种规模,在SVG生成任务中表现出色。
2170 0
StarVector:图像秒变矢量代码!开源多模态模型让SVG生成告别手绘
|
机器学习/深度学习 人工智能 运维
历时2个月,深访6位大咖,我们完成了这份AIOps指南
  2021年,业界对AIOps的关注和讨论可以说是达到了一个顶峰,许多国内外企业尝试落地AIOps的实践层出不穷。毋庸置疑,AIOps已是IT运维的大势所趋。可是想要坐上这趟飞驰的时代列车,必须掌握哪些要领?   为帮助大家解决心中疑虑,捋清技术风向及思路,我们精心准备了一次专访,采访了阿里-柳明、新浪微博-彭冬、奇虎360-籍鑫璞、携程-徐新龙、新炬网络-宋辉、平安科技-汪洋等6位AIOps领域的先行探索者。   本系列文章将会汇集他们的研究心得与实践经验,解答目前业界对AIOps普遍存在的认知误区及疑惑难点,助力国内AIOps的建设和落地。本文为上篇,从大环境着眼,详析AIOps的现
1709 0
|
人工智能
将 JPEG 和 PNG 位图转换为 SVG 矢量图,可无限放大
将 JPEG 和 PNG 位图转换为 SVG 矢量图,可无限放大
1145 1
|
机器学习/深度学习 人工智能 算法
InsCode Stable Diffusion 美图活动一期——即刻体验!来自 CSDN 的 SD 模型
InsCode 是一个集成了在线 IDE 、在线 AI 编程、在线算力租赁、在线项目部署以及在线 SD (Stable Diffusion)模型使用的综合代码开发平台。不论你是初级软件工程师,还是 AI 大模型爱好者,InsCode 都能帮助你快速编写代码,运行项目。甚至在这里你还可以一键购买算力,训练大模型,开发自己的 AI 应用程序。
InsCode Stable Diffusion 美图活动一期——即刻体验!来自 CSDN 的 SD 模型
|
Android开发 Kotlin
android开发,使用kotlin学习BroadcastReceiver
android开发,使用kotlin学习BroadcastReceiver
584 0
|
存储 监控 供应链
数仓建模—指标体系
提起指标这个词,每个人似乎都可以说出几个指标,像经常在工作中会听到的日活、月活、注册率、转化率、交易量等 事实上指标就是用来量化事物的一个工具,帮助我们去将一些抽象的事件得出一个轮廓上的描述。例如我们可以从指标上判断一个产品的好坏,用户粘性等等,例如我们通过日活能去判断出我们整个产品的用户量,从而能反应出我们这个产品的一个健康程度,也就是否处于增长过程中。
2209 1
数仓建模—指标体系

热门文章

最新文章