1. 程式人生 > >SVG路徑PATH

SVG路徑PATH

在使用之前建議下個PS或者FLASH玩玩裡面的鋼筆工具(FLASH裡的鋼筆工具比PS裡的好用)

PATH用到的指令:

M----(X Y):移動到

Z----(none):關閉路徑

L----(X Y):畫線到

H----(X):水平線到

V----(Y):垂直線到

C----(X1 Y1 X2 Y2 X Y):三次貝塞爾曲線

S----(X1Y1 X Y):光滑三次貝塞爾曲線到

Q----(X1 Y1 X Y):二次貝塞爾曲線到

T----(X Y):光滑二次貝塞爾曲線到

A----(rx ry x-axis-rotation large-arc-flag sweep-flag x y)+:橢圓弧

R----(X1 Y1(X Y)):Catmull-Rom曲線

註釋:以上所有命令均允許小寫字母。大寫表示絕對定位,小寫表示相對定位。

-----------------------------------------------------------------------------------------------

先建立一個AVG畫布

定義樣式:

 <style>
        .svgStyle{
            border: solid 1px #000000;
            margin: 0 auto;
            display: block
        }
        .pathStyle{
            stroke:#000000;
            stroke-width:5px;
            fill:none
        }
    </style>

建立SVG:

  <svg width="1200px" height="600px" version="1.1" xmlns="http://www.w3.org/2000/svg" class="svgStyle">
        <path d="M 0 300 " class="pathStyle" />
    </svg>

M:開始畫線的起點座標。

-------------------------------------------------------------------------------------------------------------------------------

L----(X Y)+:畫線到:

 <svg width="1200px" height="600px" version="1.1" xmlns="http://www.w3.org/2000/svg" class="svgStyle">
         <path d="M 10 300 L 100 300 L 50 400" class="pathStyle" />
    </svg>

即:從座標(0,300)開始畫線到座標(100,300)再畫線到座標(50,400)


---------------------------------------------------------------------------------------------------------------------

Z----(none):關閉路徑:

   <path d="M 10 300 L 100 300 L 50 400 Z" class="pathStyle" />

即:閉合路徑--自動從最後一個點和起點之間連一條線


--------------------------------------------------------------------------------------------------------

H----(X)+:水平線到

  <path d="M 10 300 H 400" class="pathStyle" />

即:根據前一個一點,水平方向畫一條線,只要一個X座標。


----------------------------------------------------------------------------------------------------------------

V----(Y)+:垂直線到

與H同理:垂直畫線

-----------------------------------------------------------------------------------------------------------------

C----(X1 Y1 X2 Y2 X Y)+:三次貝塞爾曲線:

<path d="M 10 300 C 100 200 200 400 400 300 C 500 100 550 500 600 300" class="pathStyle" />


啊吖!紅線畫得實在太喪心病狂。。

總之實際應用的時候,我們的目的圖形肯定是由多個直線或者曲線組成的,而C的兩個座標中,第一個座標就是對相對當前線段的起點進行彎曲,第二個座標則是相對當前線段的末尾點進行彎曲

---------------------------------------------------------------------------------------------------------------------

S----(X1 Y1 X Y)+:光滑三次貝塞爾曲線到

單獨使用S:

 <path d="M 0 300  S 200 500  400 300 S 600 500  800 300" class="pathStyle" />


 跟M結合:<path d="M 10 300 C 100 200 200 400 400 300 S 600 500  1000 300" class="pathStyle" />

(S屬於三次貝塞爾曲線,所以跟他配合使用的也要用三次貝塞爾曲線,如M)


S只要一個控制點,這個控制點會控制當前線的前後點進行平滑,類似於兩個C的兩個點合在一起了。

當S和其它指令結合的時候,他會自動將當前的線段和上一線段進行平滑。就好像如圖所示自動加一條控制線---綠色的線

就是好是使用鋼筆工具連線描點的時候,沒有轉換點。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Q----(X1 Y1 X Y)+:二次貝塞爾曲線到

<path d="M 0 300  Q 200 500  400 300 Q 600 500  800 300" class="pathStyle" />


如圖。跟S很像,一個控制點當兩個用,跟S的區別在於兩線段之間不會平滑過渡。

--------------------------------------------------------------------------------------------------------------------------------------------------

T----(X Y):光滑二次貝塞爾曲線到

      <path d="M 0 300 Q 300 0  600 300 T 1000 50" class="pathStyle" />


功能跟S是一樣的,T也是將兩個線段自動進行平滑

(T是二次貝塞爾曲線,所以跟它配合使用的也要用二次貝塞曲線,如Q)

------------------------------------------------------------------------------------------------------------------------------------------

A----(rx ry x-axis-rotation large-arc-flag sweep-flag x y)+:橢圓弧

rx:橢圓水平方向的半徑

ry:橢圓垂直方向的半徑

x-axis-rotation:X軸的旋轉角度,即橢圓繞起始點順時針旋轉的角度

large-arc-flag:此引數有兩個值,分別為0和1。0代表小角度弧線,1代表大角度弧線;

sweep-flag:此引數也有兩個值,分別為0和1。1代表從起點到終點弧線繞中心順時針方向,0代表逆時針方向、1代表順時針方向

x,y:弧線的終端座標。

 <path d="M 500 300 A 100 200 0 0 1 700 300"></path>

先畫個半個橢圓:


x-axis-rotation和large-arc-flag:這裡旋轉45度

 <path d="M 500 300 A 100 200 45 0 1 700 300"></path>


藍色線是我標上去的,為了好理解

--------------------------------------------------------------------------------------------------------------------------------------

R----(X1 Y1(X Y)):Catmull-Rom曲線    還不會 暫且擱置

---------------------------------------------------------------------------------------------------------------------------------------

總結:

(1)路徑的座標與座標之間可以用空格分隔,也可以用逗號分隔,如 <path d="M 0 0 L 100 0 L50 100 Z M300,300 L400,300 L350,400 Z">

(2)命令使用大寫,意味著點是相對兩個SVG畫布進行絕對定位的。如果命令使用的是小寫,這意味著此命令定義的座標和前面的當前位置是相對的

(3)C跟S配合使用,Q和T配合使用。

(4)S和T會將兩個線段的連線自動平滑

參考:http://weick.iteye.com/blog/677986

相關推薦

SVG路徑PATH

在使用之前建議下個PS或者FLASH玩玩裡面的鋼筆工具(FLASH裡的鋼筆工具比PS裡的好用) PATH用到的指令: M----(X Y):移動到 Z----(none):關閉路徑 L----(X Y):畫線到 H----(X):水平線到 V----(Y):垂直線到 C--

SVG 學習<七> SVG路徑——path

svg 說明 解析 命令解析 改變 旋轉角度 blog 小寫 基礎 SVG的path可以理解外一支畫筆,由一連串的命令控制畫筆在SVG中繪制需要的形狀。 path通過屬性 d 來編寫畫筆命令。 命令說明: 其中 大寫命令坐標是絕對位置,小寫命令坐標是相對位置。 直線命令:

SVG格式圖片轉成HTML中SVGPath路徑

顏色 工具 back spa 如果 .org 彈出 技術分享 pyc AI圖標制作完成之後,保存的svg文件包含許多AI的信息,如果要在HTML中使用,我們需要在svg文件中提取/修改信息,重新保存。 1、在AI中已經完成圖標,要保存SVG文件,點擊“文件(File)”-

深入SVG路徑~~~在DEGRAFA中使用PATH

" layout="absolute"                 backgroundGradientColors="[#333333, #222222]"                 xmlns:degrafa="com.degrafa.*"                 xmlns:paint

SVG路徑path)中的圓弧(A)指令的語法說明及計算邏輯

F.6.1 Elliptical arc syntaxAn elliptical arc is a particular path command. As such, it is described by the following parameters in order:(x1, y1) are the a

nodeJS之路徑PATH模塊

沒有 組成 use 路徑 api normalize file bin 空字符串 前面的話   path模塊包含一系列處理和轉換文件路徑的工具集,通過 require(‘path‘) 可用來訪問這個模塊。本文將詳細介紹path模塊 路徑組成 【path.dirn

SVG路徑

tro fill lar and 設置 一條直線 小寫 逆時針 yar 前面的話   本文將詳細介紹SVG路徑 path字符串   路徑(path)是一個非常強大的繪圖工具,可以用path元素繪制矩形(直角矩形或者圓角矩形)、圓形、橢圓、折線形、多邊形,以及一些

SVG路徑動畫解密

傳送門 ads details 網站 draw 詳細 mil 不知道 加載進度條 原文:SVG路徑動畫解密 原文鏈接:http://www.gbta

svg路徑蒙版動畫

打開 fin ~~ 另存為 以及 意思 class 效果 htm svg路徑蒙版動畫,是比較實用的一種動畫效果,能夠繪制如下圖所示的動畫。 接下來細說這樣的動畫是如何做成的: 1.準備工作 2.SVG路徑動畫 3.SVG路徑蒙版動畫 4.復雜圖形的編輯技

Android 路徑 Path基本操作API

addArc(RectF oval, float startAngle, float sweepAngle:為路徑新增一個多邊形 addCircle(float x, float y, float radius, Path.Direction dir):給path新增圓圈 ad

javascript新增、讀取、刪除cookie,判斷cookie是否有效,指定domain域下主路徑path下設定cookie,設定expires過期時間

有時我們需要用cookie儲存使用者名稱,記錄登入狀態,如何正確判斷該機使用者cookie是否存在呢?不能簡單使用a!=”這樣的寫法。 正確方法是:判斷是否存在名為username3的cookie,使用document.cookie.indexOf(“username3=”)來判斷,如果返回值是

svgpath命令引數表

注意:所有的這些字元命令都可以用大小寫兩種形式。大小表示絕對位置,而小寫表示相對位置。 指令 引數 名稱 描述 M x,y moveto 移動虛擬畫筆到指定的(x,y)座標,僅移動不繪製

ubuntu 下設定路徑PATH變數

Ubuntu Linux系統環境變數配置檔案:  /etc/profile : 在登入時,作業系統定製使用者環境時使用的第一個檔案 ,此檔案為系統的每個使用者設定環境資訊,當用戶第一次登入時,該檔案被執行。  /etc /environment : 在登入時作業系統

SVG路徑字串格式

命令 名稱 引數 M 移動到(moveTo) (x y)+ Z 閉合路徑(closepath) (none) L 直

HTML5 Canvas SVG路徑與KineticJS世界地圖,夠有意思!

這個實驗證明了SVG路徑功能的KineticJS通過生成一個互動式地圖從一個SVG資料來源。 產品說明:滑鼠懸停在這個國家 <!DOCTYPE HTML> <html> <head> <style> b

SVGPath Data資料簡化及資料夾所有檔案批量匯出為圖片

先看效果圖片: using Svg; using System; using System.Collections.Generic; using System.Drawing.Imaging; using System.IO; using System.Text; usin

使用SVG路徑圖製作線追蹤特效

近期看了幾篇三精-大精wing的“互動炸了”系列文章,收穫頗多,這裡學習記錄一下。 本文知識點一覽: 專案地址在最下面。 本篇主要記錄如何動態繪製曲線,從而形成很精緻的特性,先上圖: SVG簡介 SVG 意為可縮放向量圖形(Scalabl

使用svgpath來繪畫扇形

create water .data flag proc 標記 tee 萬維網 ike 可縮放矢量圖形是基於可擴展標記語言(標準通用標記語言的子集),用於描述二維矢量圖形的一種圖形格式。它由萬維網聯盟制定,是一個開放標準。有關於svg的概念不需要講解太多,需要查看更多,請點

HTML5畫布kineticjs SVG路徑教程,看到一個比較有趣的!

建立與KineticJS SVG路徑,我們可以例項化一個動態路徑()物件。路徑是最常用的,當我們想出口一個SVG路徑進入一個HTML5 Canvas路徑,或如果我們想展現複雜的圖紙作為資料字串,而不是建立一個自定義形狀

小師妹學JavaIO之:檔案File和路徑Path

# 簡介 檔案和路徑有什麼關係?檔案和路徑又隱藏了什麼祕密?在檔案系統的管理下,建立路徑的方式又有哪些?今天F師兄帶小師妹再給大家來一場精彩的表演。 # 檔案和路徑 小師妹:F師兄我有一個問題,java中的檔案File是一個類可以理解,因為檔案裡面包含了很多其他的資訊,但是路徑Path為什麼也要單獨一個