Kurz SVG - nenφ to Flash a p°ece se toΦφ!
Deklarativnφ animace umo₧≥ujφ velmi snadnΘ animovßnφ grafick²ch objekt∙ bez pou₧itφ skript∙. Tento zp∙sob se oznaΦuje jako "time-based" - m∙₧ete definovat p°esn∞ naΦasovanou zm∞nu vpodstat∞ jakΘhokoli parametru grafiky, poΦφnaje rozm∞ry, polohou a pr∙hlednostφ a₧ t°eba po zm∞nu transformaΦnφch atribut∙. To je hlavnφ rozdφl oproti SWF formßtu, kde se Φasovßnφ animacφ v₧dy odvφjφ od jednotliv²ch klφΦov²ch snφmk∙ - anglicky "frame-based". DalÜφ d∙le₧it² rozdφl je v tom, ₧e jednotlivΘ deklarativnφ animace mohou b²t na sob∞ zcela nezßvislΘ a mφt jinou dobu trvßnφ nebo poΦet opakovßnφ a podobn∞.
Deklarativnφ p°φstup mß takΘ velkou v²hodu ve snadnΘm, p°esn∞ definovanΘm p°enosu animacφ nap°φΦ cel²m spektrem softwarov²ch aplikacφ. AnimaΦnφ prvky SVG byly vyvinuty ve spoluprßci s pracovnφ skupinou W3C Synchronized Multimedia (SYMM), kterß vytvo°ila specifikaci Synchronized Multimedia Integration Language 1.0. Technologie SMIL mß p°itom u₧ dnes pom∞rn∞ silnou podporu v p°ehrßvaΦφch jako QuickTime nebo RealPlayer.
Odkazy v SVG
JeÜt∞ ne₧ se pono°φme do animacφ, povφme si n∞co mßlo o tom, jak v SVG vytvß°et odkazy. Ty jsou toti₧ zßkladem interaktivity. Obdoba hyperlinku znßmΘho z klasickΘho HTML vypadß takto:
<ellipse cx="2.5" cy="1.5" rx="2" ry="1"
fill="red" />
</a>
VÜechny grafickΘ objekty uvnit° elementu hyperlinku jsou aktivnφ - reagujφ jako odkaz. V uvedenΘm p°φkladu je to Φervenß elipsa.
DalÜφmi mo₧n²mi atributy jsou xlink:title
pro pojmenovßnφ odkazu a target
pro jmΘno rßmu ve kterΘm se mß otev°φt cφlov² dokument.
SVG mß ve slovnφku i analogii odkazu na konkrΘtnφ prvek ve strßnce. Jeliko₧ se v p°φpad∞ SVG jednß o grafick² objekt - obrßzek, je d∙le₧itΘ mφt mo₧nost adresovat konkrΘtnφ v²°ez kresby, jinak °eΦeno pohled, anglicky "view". V zßsad∞ jsou k dispozici dv∞ mo₧nosti:
- kresba.svg#svgView(viewBox(0,200,1000,1000)) - p°esn²m Φφseln²m definovßnφm v²°ezu grafiky
- kresba.svg#nejaky_pohled - odkazem na specißlnφ prvek
view
obsahujφcφ p°eddefinovan² pohled na grafick² dokument
Element view
P°ehled atribut∙ elementu:
- viewTarget = (jmΘno_objektu) - (nepovinn²) pokud zadßme identifikßtor objektu, p°i°azenΘho ke konkrΘtnφmu pohledu, prohlφ₧eΦ by jej m∞l po aktivaci hyperlinku zv²raznit
- viewBox = (x y Üφ°ka v²Üka) - atribut umo₧nφ definovat virtußlnφ okno, kter²m se u₧ivatel po aktivaci hyperlinku bude na dokument dφvat: x, y nastavφ lev² hornφ roh; Üφ°ka a v²Üka pak urΦujφ rozsah virtußlnφho pohledu
- preserveAspectRatio = (typ_p°izp∙sobenφ_rozm∞r∙) - pou₧itφm "viewBox" m∙₧e dojφt i k neproporcionßlnφ deformaci pohledu, proto mßte k dispozici tento parametr, kter²m m∙₧ete nastavit chovßnφ prohlφ₧eΦe: "none" umo₧nφ deformaci sou°adnic a hodnota, nap°φklad "xMidYMid", p°izp∙sobφ grafiku proporcionßln∞ do pohledovΘho okna a navφc ji vycentruje v obou sm∞rech (toto je v²chozφ hodnota).
- zoomAndPan - nastavenφm na hodnotu "disable" mohou prvky
view
(taktΘ₧ vÜechny vn∞jÜφ prvkysvg
) zakßzat u₧ivateli manußln∞ m∞nit pohled a zv∞tÜenφ v prohlφ₧eΦi SVG (v²chozφ je "magnify" - vÜe povoleno)
Animace
KlφΦovΘ pro pochopenφ je slovφΦko deklarativnφ - to znamenß, ₧e tv∙rce animace p°esn∞ definuje (deklaruje), ₧e dan² atribut konkrΘtnφho objektu bude animovßn (Φili jeho hodnota se bude m∞nit) v definovanΘm rozmezφ hodnot v konkrΘtnφm Φase od-do. SVG norma mß obrovskou Ükßlu mo₧nostφ, jak to ud∞lat. Velmi flexibilnφ je i urΦovßnφ Φasu - animace mohou b²t nap°φklad startovßny n∞jakou udßlostφ u₧ivatelskΘho rozhranφ (t°eba "onmouseover") nebo navßzßny na pr∙b∞h n∞jakΘ jinΘ SVG animace. Mo₧nostφ je tolik, ₧e vystaΦφ na n∞kolik Φlßnk∙.
Vztah SVG v∙Φi SMIL
SVG je jazyk odvozen² od W3C normy SMIL ("host language" v terminologii SMIL) a jako takov² tedy obsahuje animaΦnφ prvky v nφ definovanΘ - krom∞ nich ale byly definovßny i n∞kterΘ dalÜφ, aby se dosßhlo pokrytφ celΘ oblasti 2D grafiky.
Prvky definovanΘ ve specifikaci SMIL:
- animate - m∞nφ hodnoty skalßrnφch atribut∙ v Φase
- set - zjednoduÜenφ prvku
animate
pou₧φvanΘ pro zm∞nu (animovßnφ) neΦφseln²ch atribut∙ typuvisibility
- animateMotion - pohybuje s prvkem podΘl zvolenΘ animaΦnφ k°ivky urΦujφcφ drßhu pohybu
- animateColor - pro zm∞nu barevn²ch hodnot
Prvky vztahujφcφ se specißln∞ k SVG animacφm
- animateTransform - animuje transformaΦnφ atributy, velmi siln² nßstroj - jeliko₧ je mo₧nΘ jednotlivΘ typy animacφ kombinovat, lze pohodln∞ vytvo°it libovolnΘ pohybovΘ efekty
- mpath element - vektorovß cesta, kterou lze umφstit do prvku
animateMotion
a definovat tak p°esn∞ drßhu pohybu - keyPoints - tento attribut je dalÜφm rozÜφ°enφm elementu
animateMotion
a umo₧≥uje °φdit zrychlenφ, nejΦast∞jÜφ pou₧itφ je evidentnφ - vytvo°enφ p°irozen²ch pohybov²ch efekt∙ - rotate - dalÜφ atribut pro prvek
animateMotion
, kter² °φdφ sm∞r natoΦenφ animovanΘho objektu (nap°φklad dφvßme-li se shora na auto pohybujφcφ se po k°ivce, jeho ÜpiΦka by se samoz°ejm∞ m∞la stßle natßΦet ve sm∞ru jφzdy)
Animace prakticky
Abychom stßle jen neteoretizovali, vyzkouÜφme si nynφ mal² p°φklad, ve kterΘm jsou animovßny jednotlivΘ atributy "width", "x" a "fill" obdΘlnφk∙:
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg version="1.1" baseProfile="tiny"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="320px" viewBox="0 0 480 360">
<title>9.2 Animace</title>
<desc>Testuje zakladni animacni prvek 'animate'</desc>
<g font-family="Helvetica" font-size="24">
<!-- vykresleni souradnic s popisem casu -->
<line x1="190" x2="190" y1="45" y2="300"
stroke="black" stroke-width="4"/>
<line x1="460" x2="460" y1="45" y2="300"
stroke="black" stroke-width="4"/>
<text x="156" y="32">0-2 sec.</text>
<text x="380" y="32">->5 sec.</text>
<!-- 4 nasledujici animace funguji i v KSVG 3.2 -->
<!-- a ukazuji ze pro stejny efext lze vyuzit -->
<!-- ruznorode zpusoby nastaveni meznich hodnot.-->
<g>
<rect x="160" y="60" width="30" height="30"
fill="#FFAA44" stroke="red" stroke-width="4">
<animate attributeName="width" from="30" to="300"
begin="2s" dur="3s" fill="freeze"/>
</rect>
<text x="20" y="85" fill="red">from->to</text>
</g>
<g>
<rect x="160" y="100" width="30" height="30"
fill="#FFAA44" stroke="red" stroke-width="4">
<animate attributeName="width" from="30" by="270"
begin="2s" dur="3s" fill="freeze"/>
</rect>
<text x="20" y="125" fill="red">from->by</text>
</g>
<g>
<rect x="160" y="140" width="30" height="30"
fill="#FFAA44" stroke="red" stroke-width="4">
<animate attributeName="width" by="270"
begin="2s" dur="3s" fill="freeze"/>
</rect>
<text x="20" y="165" fill="red">->by</text>
</g>
<g>
<rect x="160" y="180" width="30" height="30"
fill="#FFAA44" stroke="red" stroke-width="4">
<animate attributeName="width" to="300"
begin="2s" dur="3s" fill="freeze"/>
</rect>
<text x="20" y="205" fill="red">->to</text>
</g>
<g>
<rect x="160" y="220" width="30" height="30"
fill="#FFAA44" stroke="red" stroke-width="4">
<!-- 'additive="sum"' je IGNOROVAN v KSVG 3.2 -->
<animate attributeName="x" from="0" to="270"
begin="2s" dur="3s" fill="freeze" additive="sum"/>
</rect>
<text x="20" y="245" fill="red">anim. 'x'</text>
</g>
<g>
<rect x="160" y="260" width="300" height="30"
fill="#FFAA44" stroke="red" stroke-width="4">
<!-- toto nefunguje vubec v KSVG 3.2 -->
<animate attributeName="fill" from="#FFAA44" to="#00AA44"
begin="2s" dur="3s" fill="freeze"/>
</rect>
<text x="20" y="285" fill="red">anim. 'fill'</text>
</g>
</g>
<!-- obrys platna -->
<rect x="1" y="1" width="478" height="358"
fill="none" stroke-width="2" stroke="blue"/>
</svg>
Na tomto mφst∞ musφm odboΦit a ud∞lat praktickou poznßmku t²kajφcφ se prohlφ₧eΦ∙. Bohu₧el zatφm stßle platφ, nepoΦφtßm-li komerΦnφ p°ehrßvaΦe pro mobilnφ za°φzenφ, ₧e v∞tÜina animacφ je zcela sprßvn∞ interpretovßna pouze v programu Adobe SVG Viewer 3 (ASV3). Pom∞rn∞ slibn²m v²vojem prochßzφ v poslednφ dob∞ prohlφ₧eΦ KSVG, integrovan² v unixovΘm grafickΘm prost°edφ KDE od verze 3.2. Nap°φklad p°edchozφ ukßzku je mo₧nΘ animovat i v KSVG (viz komentß°e v SVG k≤du), ale u dalÜφch ji₧ budete v∞tÜinou pot°ebovat ASV3.
Zßkladnφ struktura zßpisu animaΦnφch prvk∙ - atributy
V tΘto Φßsti si probereme ty atributy, kterΘ naleznou vyu₧itφ ve v∞tÜin∞ animaΦnφch prvk∙.
Odkaz na animovan² element
Atribut "xlink:href" obsahuje URI odkazujφcφ na cφlov² element, jen₧ musφ b²t v aktußlnφm SVG fragmentu, aby byla zaruΦena jeho dostupnost. URI musφ ukazovat na p°esn∞ jeden element. Toto URI lze dokonce vynechat - animovßn pak bude rodiΦovsk² prvek p°φmo nad°azen² danΘmu objektu animate
.
UrΦenφ animovanΘho atributu
Atribut "attributeName" - zde urΦφte atribut, kter² byste cht∞li v animaci m∞nit - pro animaci pohybu to m∙₧e b²t t°eba "x".
Atribut "attributeType" - mo₧nΘ hodnoty: "CSS", "XML", "auto". UrΦenφ jmennΘho prostoru XML ve kterΘm je definovßn cφlov² atribut. V²chozφ hodnota je "auto" a v naprostΘ v∞tÜin∞ p°φpad∙ nebude v∙bec nutnΘ se tφmto parametrem zab²vat.
UrΦenφ rozsahu hodnot
Nßsledujφcφ t°i atributy umo₧≥ujφ nastavit rozmezφ, ve kterΘm se v pr∙b∞hu animovßnφ budou hodnoty m∞nit. (V prvku set
se uplatnφ jen posledn∞ jmenovan².)
- from - poΦßteΦnφ hodnota animovanΘho atributu.
- by - zm∞na hodnoty v∙Φi poΦßteΦnφmu stavu. Pokud nastavφme "by", nebudeme u₧ nastavovat koneΦnou hodnotu "to" a naopak - je-li urΦena absolutnφ koneΦnß hodnota, nebudeme nastavovat "by".
- to - koneΦnß hodnota animace.
Zachovßnφ v²sledku animace
Atributem "fill" m∙₧ete urΦit, zda pracovnφ v²sledek animace z∙stane zachovßn (freeze) i po jejφm skonΦenφ nebo bude odstran∞n (remove - v²chozφ hodnota).
Aditivnost a kumulativnost animovan²ch hodnot
Velmi Φasto je p°i animaci u₧iteΦnΘ mφt mo₧nost m∞nit n∞jakou hodnotu (polohu, natoΦenφ) relativn∞ k poΦßteΦnφmu, klidovΘmu stavu. P°edstavme si nap°φklad "rozt°esenφ" animovanΘho objektu okolo jeho klidovΘ polohy - u₧ijete-li nßsledujφcφch atribut∙, nebudete se u₧ muset v∙bec zajφmat o jeho absolutnφ polohu. (Pro animace polohy se samoz°ejm∞ nabφzφ jeÜt∞ alternativnφ °eÜenφ tΘto ·lohy pomocφ zm∞ny sou°adnicovΘho systΘmu, ale to nynφ nenφ d∙le₧itΘ.)
Atribut "additive" urΦφ, zda aktußlnφ animovanß hodnota nahradφ klidovou hodnotu atributu (replace - v²chozφ hodnota) nebo se k nφ bude p°iΦφtat (sum).
Atribut "accumulate" - kumulativnost se uplatnφ v p°φpad∞ animaΦnφch cykl∙, kterΘ prob∞hnou vφce ne₧ jednou. Funguje to p°esn∞ tak, jak byste Φekali - jestli₧e ji nastavφte na hodnotu "sum", pak se k aktußlnφ hodnot∞ animace p°iΦφtß hodnota, kterou m∞l animovan² atribut na konci p°edchßzejφcφho cyklu.
P°φklad pou₧itφ atribut∙
<animate attributeName="width"
from="0px" to="10px" dur="10s"
additive="sum" accumulate="sum"
repeatCount="5"/>
</rect>
Na konci prvnφho opakovßnφ bude hodnota "width" rovna 30 px, na konci cruhΘho cyklu 40 px a tak dßle. A nynφ jeÜt∞ reßlnß demonstrace (Φty°i animovanΘ obdΘlnφky, ka₧d² s r∙znou kombinacφ t∞chto atribut∙):
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg version="1.1" baseProfile="tiny"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="320px" viewBox="0 -20 480 300">
<desc>
Priklad nazorne predvadi animaci rozmeru 4 obdelniku
funkce atributu 'additive' a 'accumulate'.
Kazdy obdelnik demonstruje jinou kombinaci parametru.
Cervene ramovani ukazuje velikost po ukonceni
vsech 3 animacnich cyklu.
</desc>
<title>9.3.5 Atributy 'additive' a 'accumulate' </title>
<!-- nastav centrovane pismo -->
<!-- pro vsechny vnorene skupiny -->
<g font-family="Helvetica" font-size="18" text-anchor="middle">
<!-- 4 stejne obd. umistene touto -->
<!-- transformaci na ruzne pozice -->
<g transform="translate(0, 0)">
<rect x="60" y="20" width="50" height="20"
fill="none" stroke="red" stroke-width="4"/>
<rect x="60" y="20" width="50" height="20" fill="violet">
<animate attributeName="height" calcMode="discrete"
additive="replace" accumulate="none"
repeatCount="3" from="200" to="20"
begin="0s" dur="4s" fill="freeze"/>
</rect>
<text x="85" y="0" fill="navy">replace/none</text>
</g>
<!-- 2. obdelnik -->
<g transform="translate(110, 0)">
<rect x="60" y="20" width="50" height="40"
fill="none" stroke="red" stroke-width="4"/>
<rect x="60" y="20" width="50" height="20" fill="violet" >
<animate attributeName="height" calcMode="discrete"
additive="sum" accumulate="none"
repeatCount="3" from="200" to="20"
begin="0s" dur="4s" fill="freeze"/>
</rect>
<text x="85" y="0" fill="navy">sum/none</text>
</g>
<!-- 3. obdelnik -->
<g transform="translate(220, 0)">
<rect x="60" y="20" width="50" height="60"
fill="none" stroke="red" stroke-width="4"/>
<rect x="60" y="20" width="50" height="20" fill="violet" >
<animate attributeName="height" calcMode="discrete"
additive="replace" accumulate="sum"
repeatCount="3" from="200" to="20"
begin="0s" dur="4s" fill="freeze"/>
</rect>
<text x="85" y="0" fill="navy">replace/sum</text>
</g>
<!-- 4. obdelnik -->
<g transform="translate(330, 0)">
<rect x="60" y="20" width="50" height="80"
fill="none" stroke="red" stroke-width="4"/>
<rect x="60" y="20" width="50" height="20" fill="violet">
<animate attributeName="height" calcMode="discrete"
additive="sum" accumulate="sum"
repeatCount="3" from="200" to="20"
begin="0s" dur="4s" fill="freeze"/>
</rect>
<text x="85" y="0" fill="navy">sum/sum</text>
</g>
<!-- obrys platna -->
<rect x="1" y="-19" width="478" height="298" fill="none" stroke-width="2" stroke="blue" />
</g>
</svg>
Zßkladnφ struktura zßpisu animaΦnφch prvk∙ - elementy
V tΘto Φßsti si probereme elementy, pomocφ nich₧ budeme provßd∞t animace v SVG.
Element animate
Zcela obecn² prvek, pou₧iteln² k animaci vÜech Φφseln²ch hodnot. V dalÜφch Φßstech poznßte specializovan∞jÜφ elementy, urΦenΘ t°eba jen a pouze k animaci pohybu...
Pomocφ jednoho animaΦnφho prvku lze m∞nit v Φase prßv∞ jeden atribut. Ne vÜechny atributy a ne vÜechny elementy mohou b²t zapojeny do deklarativnφch animacφ. Nebojte se ale, v∞tÜinou bude vÜe velmi intuitivnφ a p°φpadnΘ nejasnosti si m∙₧ete ov∞°it v tabulkov²ch p°ehledech normy SVG.
Element set
Tento prvek provßdφ p°esn∞ to, co naznaΦuje jeho anglick² v²znam - nastavφ dan² atribut na danou hodnotu v p°esn∞ definovan² Φasov² ·sek. Vyu₧ijete ho v∞tÜinou p°i operacφch s dvoustavov²mi prom∞nn²mi, nap°φklad typu viditelnost (skryj Φi uka₧ n∞jak² prvek) nebo zm∞na textu. Tento animaΦnφ prvek logicky nem∙₧e pracovat aditivn∞ ani kumulativn∞.
Atribut "to" urΦφ hodnotu, kterß bude nastavena po dobu trvßnφ animace.
Element animateColor
Atributy "from", "by" a "to" v tomto p°φpad∞ samoz°ejm∞ specifikujφ hodnoty barev, p°iΦem₧ je n∞kolik povolen²ch zp∙sob∙ zßpisu - analogicky, tak jak je zapisujete kdy₧ definujete barvy v²plnφ a tah∙. Do hry vstupuje tΘ₧ atribut "color-interpolation" popsan² ji₧ d°φve v Φßsti o vypl≥ovßnφ.
Element animateTransform
- dynamickΘ 2D transformace
Tento prvek umo₧≥uje animovat transformaΦnφ atributy normy SVG. A ty dovolujφ elegantn∞ uskuteΦnit naprosto libovolnΘ polohovΘ transformace, zm∞nu m∞°φtka, zkosenφ...
Atributy elementu animateTransform
:
- attributeName - tento atribut bude v₧dy nastaven takto: attributeName="transform"
- type - urΦenφ typu transformace
- from, by, to - proto₧e v∞tÜina transformaΦnφch operacφ mß vφce ne₧ jeden parametr, budou v tomto p°φpad∞ obsahem t∞chto atribut∙ vÜechny po₧adovanΘ hodnoty. Nap°φklad rotace s poΦßteΦnφm ·hlem 30 stup≥∙ a st°edem otßΦenφ v bod∞ [25,25] se zapφÜe takto:
<animateTransform attributeName="transform" type="rotate"
from="30,25,25" to="90,65,65"
begin="click" dur="9s"
additive="sum" fill="freeze" />
Typy transformacφ (hodnoty v hranat²ch zßvorkßch jsou nepovinnΘ, volitelnΘ podle typu po₧adovanΘ transformace):
- "translate" - posun_x [,posun_y]
- "scale" - m∞°φtko_x [,m∞°φtko_y] - zapφÜe-li se zde pouze jedna hodnota, bude pou₧ita pro zm∞nu m∞°φtka v obou sou°adnicov²ch osßch, jinak bude nßsobenφ pro ka₧dou osu rozdφlnΘ
- "rotate" - ·hel [st°ed_x st°ed_y] - pozor, neuvede-li se na tomto mφst∞ st°ed otßΦenφ, bude se dotyΦn² objekt otßΦet nikoli okolo svΘ osy, ale okolo bodu se sou°adnicemi (0,0)
- "skewX", "skewY" - ·hel zkosenφ
P°φklad pou₧itφ animaΦnφch element∙
PraktickΘ demonstrace kombinovßnφ animaΦnφch prvk∙ na pohybliv²ch objektech a na textu°e:
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Basic//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-basic.dtd">
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 480 240" width="240px"
version="1.1" baseProfile="basic">
<title>9.7.2 Animace</title>
<desc>
Priklad animuje transformaci vyplnoveho vzoru
a ukazuje jak snadno muzete v SVG vyrobit
i relativne slozite graficke hracky.
</desc>
<!-- definice textury slozene ze 4 ctvercu -->
<!-- navic zdeformovanych transformacnim atr. -->
<pattern patternUnits="userSpaceOnUse" id="Pat3"
x="0" y="0" width="20" height="20"
patternTransform="translate(25 215) scale(2) skewX(45)">
<rect x="0" y="0" width="10" height="10" fill="red"/>
<rect x="10" y="0" width="10" height="10" fill="green"/>
<rect x="0" y="10" width="10" height="10" fill="blue"/>
<rect x="10" y="10" width="10" height="10" fill="yellow"/>
<!-- toto vytvari dojem nekonecneho beziciho pasu -->
<animateTransform attributeName="patternTransform"
type="translate" from="0,0" to="40,0" dur="1s"
fill="freeze" additive="sum" repeatCount="indefinite" />
</pattern>
<!-- textura se aplikuje na objekty -->
<rect x="20" y="30" width="440" height="50" fill="url(#Pat3)"/>
<circle cx="400" cy="120" r="40" fill="url(#Pat3)" />
<rect x="20" y="100" width="100" height="50" fill="url(#Pat3)">
<!-- vytvari efekt smrstovani a natahovani -->
<animateTransform attributeName="transform"
type="scale" values="1,1;3,1;1,1" keyTimes="0 85% 1" dur="8s"
fill="freeze" additive="sum" repeatCount="indefinite" />
</rect>
<text font-family="Helvetica" font-size="32" x="20" y="220">
Vzorky jsou animovany.
</text>
<!-- obrys platna -->
<rect x="1" y="1" width="478" height="238"
fill="none" stroke-width="2" stroke="blue" />
</svg>
Kurz SVG - tvorba vektorovΘ grafiky v XML
Pokud u₧ mßte dost suchΘ teorie Scalable Vector Graphics, nenφ nic sna₧Üφho, ne₧ se vrhnout na praktickΘ testovßnφ jeho mo₧nostφ. Kurz SVG vßm usnadnφ osvojenφ zßkladnφch struktur a vlastnostφ tohoto jazyka pro prßci s vektorovou grafikou. Tato sΘrie Φlßnk∙ dosud nebyla ukonΦena!
- Kurz SVG - animace (praktickΘ ukßzky)
- Kurz SVG - animace (Φasovßnφ)
- Kurz SVG - nenφ to Flash a p°ece se toΦφ! (prßv∞ Φtete)
- Kurz SVG - transformace sou°adnic
- Kurz SVG - o°ezßvßnφ a maskovßnφ
- Kurz SVG - vypl≥ovßnφ II
- Kurz SVG - vypl≥ovßnφ I
- Kurz SVG - text
- Kurz SVG - grafickß primitiva
- Kurz SVG - struktura dokumentu, zobrazovacφ a vykreslovacφ model