SVGPath – 強大的SVG路徑解析庫

一、SVGPath簡介

SVG(Scalable Vector Graphics)是一種基於XML的矢量圖形格式,是W3C制定的標準。SVGPath是一個強大的路徑解析庫,它可以將SVG路徑指令解析成可用的數據結構,也可以將數據結構轉換成SVG路徑字符串。 該庫支持所有SVG路徑指令及其變體,例如:M,L,H,V,C,S,Q,T,A以及Z指令。同時還支持相對命令和絕對命令,也支持簡寫形式和完整形式。

二、SVGPath使用

1、安裝SVGPath庫

可以使用npm進行安裝,命令如下:

npm install svgpath

2、使用SVGPath庫

在你的應用程序中導入SVGPath:

const { SVGPathData, SVGPathTransformer, makeAbsolute } = require('svgpath');

3、解析SVG路徑指令

使用SVGPathTransformer.transform方法可以將SVG路徑指令解析成可用的SVGPathData對象,SVGPathData對象是SVGPathTransformer解析的結果,可以用於生成SVG路徑字符串:

const transformer = new SVGPathTransformer('M 100 100 L 300 100 L 200 300 z');
const pathData = transformer.transform();
console.log(pathData);

輸出結果為:

SVGPathData {
  getCommands: [Function: getCommands],
  commands: [
    MoveToAbsCommand {command: "M", x: 100, y: 100},
    LineToAbsCommand {command: "L", x: 300, y: 100},
    LineToAbsCommand {command: "L", x: 200, y: 300},
    ClosePathCommand {command: "z"}
  ],
  fromArray: [Function: fromArray],
  toArray: [Function: toArray],
  toAbs: [Function: toAbs],
  toRel: [Function: toRel],
  toString: [Function: toString],
  toSVGString: [Function: toSVGString],
  iter: [Function: iter],
  bbox: [Function: bbox]
}

SVGPathData.commands是一個SVGPathCommand數組,可以通過getCommands方法獲取。SVGPathCommand對象表示SVG路徑指令。每個SVGPathCommand對象都有command屬性和一些特定的屬性,例如MoveToAbsCommand對象有x和y屬性。可以使用toArray和toString方法將SVGPathCommand數組轉換為SVG路徑字符串。

4、SVGPath操作

1、SVGPathData對象的轉換

使用makeAbsolute方法可以將SVGPathData對象中的相對命令轉換為絕對命令:

const absolutePathData = makeAbsolute(pathData);
console.log(absolutePathData.toString());

輸出結果為:

M 100 100 L 300 100 L 200 300 Z

2、SVGPathCommand對象的操作

可以使用SVGPathCommand對象的toAbs方法和toRel方法將命令轉換為絕對命令和相對命令:

const mover = new MoveToAbsCommand(100, 100);
const moverAbs = mover.toAbs();
console.log(moverAbs.toString()); // M 100 100

const moverRel = moverAbs.toRel();
console.log(moverRel.toString()); // m 100 100

3、SVGPathCommand數組的操作

可以使用SVGPathData.toArray方法和fromArray方法將SVGPathCommand數組轉換為普通數組和SVGPathData對象:

const commands = pathData.toArray();
console.log(commands); // ['M', 100, 100, 'L', 300, 100, 'L', 200, 300, 'Z']

const newData = SVGPathData.fromArray(commands);
console.log(newData.toSVGString()); // M 100 100 L 300 100 L 200 300 Z

三、SVGPath擴展應用

1、SVGPathEditor

可以將SVGPath與SVGPathEditor結合使用,實現在線編輯SVG路徑指令的功能。SVGPathEditor是一個基於SVG和SVGPath的編輯器庫,通過SVGPathEditor可以在網頁中直接編輯SVG路徑,並實時生成SVG路徑指令。

示例代碼:

SVGPathEditor示例

#editor {
width: 800px;
height: 500px;
}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/187844.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-28 06:25
下一篇 2024-11-28 06:25

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python最強大的製圖庫——Matplotlib

    Matplotlib是Python中最強大的數據可視化工具之一,它提供了海量的製圖、繪圖、繪製動畫的功能,通過它可以輕鬆地展示數據的分布、比較和趨勢。下面將從多個方面對Matplo…

    編程 2025-04-29
  • Python range: 強大的迭代器函數

    Python range函數是Python中最常用的內置函數之一。它被廣泛用於for循環的迭代,列表推導式,和其他需要生成一系列數字的應用程序中。在本文中,我們將會詳細介紹Pyth…

    編程 2025-04-29
  • Python文件路徑賦值

    Python中文件操作是非常基本的操作,而文件路徑是文件操作的前提。本文將從多個方面闡述如何在Python中賦值文件路徑。 一、絕對路徑和相對路徑 在Python中,路徑可以分為絕…

    編程 2025-04-28
  • LuaEP:一款強大的Lua開發框架

    LuaEP是一個集成了可以快速開發web應用程序所需的組件的Lua開發框架。它以Lua語言為基礎,提供了許多常用接口和庫,使得開發者不需要從頭開始編寫web應用程序,而是專註於業務…

    編程 2025-04-28
  • JS圖片沿着SVG路徑移動實現方法

    本文將為大家詳細介紹如何使用JS實現圖片沿着SVG路徑移動的效果,包括路徑製作、路徑效果、以及實現代碼等內容。 一、路徑製作 路徑的製作,我們需要使用到SVG,SVG是可縮放矢量圖…

    編程 2025-04-27
  • Python3文件路徑操作

    Python3中文件路徑操作是日常編程中常用到的基礎操作之一。在Python中,我們可以使用內置庫os來操作文件路徑,包括創建、刪除、移動、複製等文件操作。本文將深度解析Pytho…

    編程 2025-04-27
  • Python文件相對路徑怎麼寫

    Python是一門被廣泛使用的編程語言,Python腳本通常需要對文件進行讀寫操作。而那些需要讀寫的文件,其路徑往往並不在Python腳本的同一目錄下,這就需要我們了解Python…

    編程 2025-04-27
  • 高德拾取——地圖API中的強大工具

    一、高德拾取介紹 高德拾取是高德地圖API中的一項重要工具,它可以幫助開發者在地圖上快速選擇經緯度點,並提供多種方式來獲取這些點的信息,例如批量獲取坐標的地理位置、測量兩個或多個點…

    編程 2025-04-25
  • SVG與CSS

    一、SVG與CSS的介紹 SVG(可縮放矢量圖形)是用於描述二維矢量圖形的XML標記語言。其可以通過文本編輯器進行編輯,也可以通過JavaScript動態操作SVG元素。與常規圖像…

    編程 2025-04-25

發表回復

登錄後才能評論