SVGの基本演習

ここではSVGの基本要素について学習できるように準備しました。実際に 1つのSVGファイル作成を通じて、各要素を覚えてもらいたいと考えています。 Webページ作成の際には、「ステップアップXML活用法」(田中成典監修、工学社) のSVGのページを参考にしました。

このページでは下記のSVGファイルのサンプルを作ってもらいます。 SVGはテキストファイルですので、下記の図もファイル容量が極めて小さくて済 みます。また、SVGファイルをWebブラウザで表示させるには、 SVG Viewerというプラグインを インストールする必要があります。情報大の教育用端末、および学内販売 ノートPCには全てインストール済です。

sample1.svgの表示

上記のSVGファイルのソースを閲覧するには、上記のSVGの図の上で、 右クリックした後に「ソースを表示」という項目を選択してください。 演習では最終的に完成させますが、理解し、覚えるために、 段階を経て作成してください。

HTML文書への貼り込み

この演習で作成するSVGファイルの名前をsample1.svg、 SVGファイルを貼り付けるHTMLファイルをsample1.html とします。以下に、HTMLファイルのソースを示しますので、 大した文量ではないですから、自分自身で入力してください。 このHTMLファイルは、EUC-JPかShift_JIS(または自動選択でも可)で 保存しましょう。

sample1.html

<html>
<body>

<p>
sample1.svgの表示
</p>

<embed src="sample1.svg" name="sample1.svg" 
 width="300" height="300" type="image/svg-xml"
 pluginstage="http://www.adobe.com/svg/viewer/install/" />

</body>
</html>

SVGの基本

日本語を使用する場合にUnicodeでの保存が要求 されますので、それを実現する秀丸での作業を前提とします。 秀丸での保存では、文字コードの選択では「Unicode」を指定します。 またSVGファイルにおけるencodingの記述は、 ここではutf-8としてください。

また下記の例では、SVGの描画領域を横方向(width)に300ピクセル、縦方向(height)に 300ピクセル確保しています。線や矩形などの図形を記述する際に2次元座標値を 用いて表現しますが、その際には左上隅を原点として、 横方向をx軸縦方向をy軸とみなします。覚えておきましょう。

sample1.svg

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000303 Stylable//EN" 
 "http://www.w3.org/2000/svg10-20000303-stylable" >

<svg xml:space="preserve" width="300" height="300">


</svg>

線、曲線

線、曲線を表現するには、いくつかの要素が用意されています。

それでは、下記の「追加する記述」を、sample1.svgの中に 記述していきましょう。記述し終えたら、Webブラウザ上で sample1.htmlを閲覧して、line要素とpath要素が 正しく表示されているか確認しましょう。

追加する記述1

<line x1="60" y1="30" x2="60" y2="250" style="stroke:#cccccc;stroke-width:15" />

追加する記述2

<path id="path1" d="M 20 240 L 60 260 L 100 240 L 140 260 L 180 240 L 220 260 L 260 240" style="fill:none;stroke:black;stroke-width:5;stroke-dasharray:2 1;" />

矩形(多角形)

追加する記述

<rect x="60" y="30" width="200" height="80" rx="20" ry="20" style="fill:#cccccc"/>

円、楕円

円は中心の座標と半径が、楕円は中心の半径とx方向の半径、y方向の半径が与えられ れば表現できます。

追加する記述1

<circle cx="100" cy="70" r="25" style="fill:green; fill-opacity:1; stroke:black; stroke-width:5">
</circle>

追加する記述2

<circle cx="160" cy="70" r="25" style="fill:yellow; fill-opacity:1; stroke:black; stroke-width:5">
</circle>

追加する記述3

<circle cx="220" cy="70" r="25" style="fill:red; fill-opacity:1; stroke:black;stroke-width:5">
</circle>

アニメーション

アニメーション要素の説明は長くなるので割愛します。

追加する記述1:上記の「円」の記述に、赤字部分を追加

<circle cx="100" cy="70" r="25" style="fill:green; fill-opacity:1; stroke:black; stroke-width:5">
  <animateColor attributeName="fill" attributeType="CSS" fill="freeze" from="white" to="green" dur="3s" begin="click" repeatCount="1"/>
</circle>

追加する記述2

<circle cx="160" cy="70" r="25" style="fill:yellow; fill-opacity:1; stroke:black; stroke-width:5">
  <animateColor attributeName="fill" attributeType="CSS" fill="freeze" from="white" to="yellow" dur="3s" begin="mouseover" repeatCount="1"/>
</circle>

追加する記述3

<circle cx="220" cy="70" r="25" style="fill:red; fill-opacity:1; stroke:black;stroke-width:5">
  <animateColor attributeName="fill" attributeType="CSS" fill="freeze" from="white" to="red" dur="3s" begin="mouseout" repeatCount="1"/>
</circle>

文字列

追加する記述1

<text x="50" y="150" style="font-size:25;fill:green;stroke:black;">緑:クリック</text>

追加する記述2

<text x="50" y="180" style="font-size:25;fill:yellow;stroke:black;">黄:マウスオー バー</text>

追加する記述3

<text x="50" y="210" style="font-size:25;fill:red;stroke:black;">赤:マウスアウ ト</text>

図形の変形(回転、拡大、移動)

図形の変形と書きましたが、各要素にtransform属性を 与えることで、回転、拡大、移動などを実現できます。

属性名 パラメータ 説明
translate x, y x方向にx, y方向にyだけ移動
scale x, y(倍率) x方向にx, y方向にyだけ拡大・縮小
rotate angle(度) 時計回りにangleだけ回転

下記の記述では、g要素を使って、複数の図形要素をまとめ て、一括して移動、回転を行っています。

追加する記述

<g transform="translate(-20 30)">
  <g transform="rotate(-10)">

  </g>
</g>

[XMLのページ] [環境情報システム論のページ]
須崎純一 京都大学大学 工学研究科都市環境工学専攻 環境情報学講座