SVG transform變換深入理解
SVG transform用法詳解一文對transform變換做詳細介紹,也涉及到它變化的實質。
可能由於未著重的強調,會導致一些讀者忽略或者不能很好的理解。
本文不對變換細節做介紹,只結合圖示分析它的實質。
變換不僅可以使用提供的變換函式,也可以使用matrix矩陣函式,SVG矩陣和canvas矩陣原理一樣。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> * { margin:0px; padding:0px; } svg { border:1px solid red; width:300px; height:300px; margin:100px; } </style> </head> <body> <svg> <rect id="ant" x="60" y="60" width="100" height="100" transform="matrix(2, 0, 0, 2, 0, 0)" fill="blue"/> </svg> <div></div> </body> </html>
採用matrix函式對元素進行縮放;其實translate()、skew、scale()和rotate()內部都是呼叫的矩陣函式。
transform變換的實質:
對SVG圖形元素的變換,表面看是針對元素本身,比如translate位移,好像是將元素從當前座標系的一個位置移動到另一個位置。然而事實且並非如此,每當對元素應用transform變換,都會在此元素之上建立一個原來使用者座標系的副本,然後對此座標系進行位移、縮放等操作,於是在視覺上就產生了操作元素本身的效果。
特別說明:所有演示圖片均來自於外國技術網站,在這裡非常感謝。
在初始使用者座標系中,有一個鸚鵡圖形,並沒有採用任何變換。
簡略程式碼如下:
[XML] 純文字檢視 複製程式碼<svg width="800" height="800"> <g id="parrot"> <!-- shapes and paths forming the parrot --> </g> </svg>
下面我們先進行位移操作,程式碼如下:
[XML] 純文字檢視 複製程式碼<svg width="800" height="800"> <g id="parrot" transform="translate(150 200)"> <!-- shapes and paths forming the parrot --> </g> </svg>
變換後的圖示如下:
實質是座標系位置的改變,圖示如下:
總結如下:
(1).不要以日常生活中物體位移對svg中相關概念的理解。
(2).SVG中元素的變換,實質是座標系的變換,從而達到視覺上的位移或者形狀變化的效果。
相關文章
- 理解SVG transform座標變換SVGORM
- 理解SVG座標系統和變換: transform屬性SVGORM
- 深入理解TransformORM
- SVG animateTransform變換動畫SVGORM動畫
- css 3D transform變換CSS3DORM
- SVG transform用法詳解SVGORM
- 理解SVG座標系統和變換: 建立新視窗SVG
- css3 | 淺談transform變換CSSS3ORM
- View Transform(檢視變換)詳解ViewORM
- 理解SVG座標系和變換:視窗,viewBox和preserveAspectRatioSVGView
- CSS transform 2D變換詳解CSSORM
- 【OI向】快速傅立葉變換(Fast Fourier Transform)ASTORM
- Flutter基礎-016-Transform變換FlutterORM
- 影象處理1--傅立葉變換(Fourier Transform )ORM
- Flutter 45: 圖解矩陣變換 Transform 類 (二)Flutter圖解矩陣ORM
- svg06——svg中座標變換與順序的關係SVG
- 視覺化學習:CSS transform與仿射變換視覺化CSSORM
- 仿射變換及其變換矩陣的理解矩陣
- Laravel Transform 轉換器LaravelORM
- 什麼是Transform轉換ORM
- [譯] 深入淺出 SVGSVG
- 深入理解ThreadLocal及其變種thread
- 如何通俗地理解傅立葉變換?
- 矩陣的乘法運算與css的3d變換(transform)矩陣CSS3DORM
- 深入理解SVG座標體系和transformations- viewport, viewBox,preserveAspectRatioSVGORMView
- 深入理解Java中的不可變物件Java物件
- 短時傅立葉變換原理理解
- 線上SVG轉換,支援SVG to PNG、SVG to JPEG、SVG to WEBP 圖片轉換操作-toolfk程式設計師線上工具網SVGWeb程式設計師
- SVG 漸變動畫效果SVG動畫
- Android 如何切換到 Transform API?AndroidORMAPI
- JS中的變數賦值深入理解JS變數賦值
- 深入理解變數提升和函式提升變數函式
- 理解快速傅立葉變換(FFT)演算法FFT演算法
- macOS 轉換 SVG 到 PNGMacSVG
- css3有趣的transform形變CSSS3ORM
- 【css基礎】如何理解transform的matrix()用法CSSORM
- 深入理解Go系列一之指標變數Go指標變數
- 深入理解javascript系列(五):變數物件(VO)2JavaScript變數物件