天天看點

SVG與perl SVG學習筆記

以前在861部隊的時候學習的是特殊版本的SVG子產品,一直以為使用的是正統的SVG,13年出來的時候才發現自己錯的很離譜,是以重新學習了一下将筆記奉上~~~

SVG是定義對象的,在perl裡面就是個對象要先建立:

my $svg = SVG->new(width=>300, height=>300);
my $svg = SVG->new;
           

對于矩形來說rect:

x 屬性定義矩形的左側位置(例如,x="0" 定義矩形到浏覽器視窗左側的距離是 0px)

y 屬性定義矩形的頂端位置(例如,y="0" 定義矩形到浏覽器視窗頂端的距離是 0px)

rx 和 ry 屬性可使矩形産生圓角。

style 屬性用來定義 CSS 屬性

CSS 的 fill 屬性定義矩形的填充顔色(rgb 值、顔色名或者十六進制值)

CSS 的 stroke-width 屬性定義矩形邊框的寬度

CSS 的 stroke 屬性定義矩形邊框的顔色

CSS 的 fill-opacity 屬性定義填充顔色透明度(0 - 1)

CSS 的 stroke-opacity 屬性定義筆觸顔色的透明度(0 - 1)

CSS 的 opacity 屬性定義整個元素的透明值(0 - 1)

部落客認為所有的style屬性适用于所有的圖形界面;

對于circle,cx 和 cy 屬性定義圓點的 x 和 y 坐标。如果省略 cx 和 cy,圓的中心會被設定為 (0, 0),r 屬性定義圓的半徑;

對于ellipse,cx 屬性定義圓點的 x 坐标,cy 屬性定義圓點的 y 坐,标rx 屬性定義水準半徑,ry 屬性定義垂直半徑;

對于line、points、polygon、polyline、text差不多定義坐标即可;

path比較複雜,常用的是M、C、Z、L,大寫表示絕對定位,小寫表示相對定位;

對于漸變來說,<linearGradient> 标簽必須嵌套在 <defs> 的内部。

當 y1 和 y2 相等,而 x1 和 x2 不同時,可建立水準漸變

當 x1 和 x2 相等,而 y1 和 y2 不同時,可建立垂直漸變

當 x1 和 x2 不同,且 y1 和 y2 不同時,可建立角形漸變

對于perl裡面的子產品來說:

#!/usr/bin/env perl 
use strict;
use warnings;
use SVG;

my $svg = SVG->new;
...
print $svg->xmlify;
           

或者:

my $out = $svg->xmlify;
open SF, ">tmp.svg";
print SF $out;