SVGマスターへの道

基本図形を描こう - 四角、丸、線、そしてもっと!

前のページでSVGの「入れ物」である <svg> タグと viewBox について学びましたね。いよいよ、その中に具体的な図形を描いていきましょう!SVGでは、あらかじめ用意されたいくつかの基本的な図形要素を使うことで、簡単に様々な形を表現できます。

これらの図形要素は、すべて <svg> タグの中に書きます。それぞれの図形は「属性」と呼ばれるパラメータで、位置や大きさ、色などを指定します。

<rect> - 四角形を描こう

<rect> (rectangleの略) は、四角形や長方形を描くための要素です。主な属性は以下の通りです。

<rect> デモ

<svg width="100%" height="150" viewBox="0 0 350 150">
  <rect id="demoRect" x="10" y="10" width="100" height="80" rx="0" ry="0" fill="#3498db" stroke="#2980b9" stroke-width="2"/>
</svg>

<circle> - 円を描こう

<circle> は、円を描くための要素です。

<circle> デモ

<svg width="100%" height="150" viewBox="0 0 350 150">
  <circle id="demoCircle" cx="50" cy="50" r="40" fill="#e74c3c" stroke="#c0392b" stroke-width="2"/>
</svg>

<ellipse> - 楕円を描こう

<ellipse> は、楕円を描くための要素です。

<ellipse> デモ

<svg width="100%" height="150" viewBox="0 0 350 150">
  <ellipse id="demoEllipse" cx="70" cy="60" rx="60" ry="30" fill="#f1c40f" stroke="#f39c12" stroke-width="2"/>
</svg>

<line> - 線を引こう

<line> は、直線を描くための要素です。線には「塗り」の概念はなく、「線」の色と太さを指定します。

<line> デモ

<svg width="100%" height="150" viewBox="0 0 350 150">
  <line id="demoLine" x1="10" y1="10" x2="150" y2="100" stroke="#2ecc71" stroke-width="5"/>
</svg>

<polyline> - 折れ線を描こう

<polyline> は、複数の点をつないだ折れ線を描きます。線は自動的には閉じません。

<polyline> デモ

<svg width="100%" height="150" viewBox="0 0 350 150">
  <polyline id="demoPolyline" points="10,10 50,80 100,30 150,100 200,50" fill="none" stroke="#9b59b6" stroke-width="3"/>
</svg>

<polygon> - 多角形を描こう

<polygon> は、複数の点をつないだ多角形を描きます。<polyline> と似ていますが、最後の点と最初の点を自動的につないで図形を閉じます。そのため、通常は塗りつぶし(fill)を使います。

<polygon> デモ

<svg width="100%" height="150" viewBox="0 0 350 150">
  <polygon id="demoPolygon" points="50,10 100,10 120,50 80,80 30,50" fill="#1abc9c" stroke="#16a085" stroke-width="2"/>
</svg>

SVGとCanvasでの基本図形描画の比較

ここで、SVGとCanvasで同じような簡単な図形(例えば、赤い四角と青い円)を描くコードを比較してみましょう。

SVGの場合

<svg width="200" height="150" style="border:1px solid #ccc;">
  <rect x="10" y="10" width="80" height="60" fill="red"/>
  <circle cx="140" cy="90" r="30" fill="blue"/>
</svg>

SVGでは、描きたい図形をXMLタグとして「宣言」します。各図形はDOMの一部となり、後からIDなどで選択して色を変えたり、動かしたりするのが得意です。

Canvasの場合

<canvas id="myCanvas" width="200" height="150" style="border:1px solid #ccc;"></canvas>
<script>
  const canvas = document.getElementById('myCanvas');
  const ctx = canvas.getContext('2d');

  ctx.fillStyle = 'red';
  ctx.fillRect(10, 10, 80, 60);

  ctx.fillStyle = 'blue';
  ctx.beginPath();
  ctx.arc(140, 90, 30, 0, 2 * Math.PI);
  ctx.fill();
</script>

Canvasでは、JavaScriptを使って「描画命令」を順番に実行していきます。一度描画すると、それは単なるピクセルの集まりになります。特定の部分だけを変えたい場合は、通常、その部分を含む領域を再描画する必要があります。

どちらが良いということではなく、作りたいものや操作の仕方によって使い分けます。SVGは構造的で、CSSやDOM操作と相性が良いのに対し、Canvasはピクセル単位の自由な描画や大量のオブジェクトの高速描画に向いています。

ちょっとしたコツ: fillstroke

多くの図形要素では、fill (塗りつぶし) と stroke (枠線) 属性で見た目を指定します。

色やスタイルの指定方法については、後のページで詳しく解説しますね!

まとめ

このページでは、SVGで基本的な図形を描くための要素、<rect>, <circle>, <ellipse>, <line>, <polyline>, <polygon> を学びました。それぞれの属性をデモで動かして、どのように図形が変化するかを体験できたでしょうか。

これらの基本図形を組み合わせるだけでも、かなり複雑なイラストを作ることができます。しかし、もっと自由な曲線や形を描きたい場合もあるでしょう。そんな時に大活躍するのが、次回の主役「<path> (パス)」要素です!

次のページ「パスを極める - 自由自在な線と形」で、SVGの表現力をさらに引き出しましょう。

このページの要約

日本語

SVGでは、<rect>(四角形)、<circle>(円)、<ellipse>(楕円)、<line>(線)、<polyline>(折れ線)、<polygon>(多角形)といった基本的な図形要素を使って絵を描きます。各要素は、x, y, width, height, cx, cy, r, rx, ry, points などの属性で位置や大きさを指定し、fillstroke 属性で色や線のスタイルを指定します。SVGは宣言的に図形を定義し、各図形はDOM要素として扱えるのに対し、CanvasはJavaScriptで手続き的に描画します。

English

In SVG, basic shapes like <rect> (rectangle), <circle> (circle), <ellipse> (ellipse), <line> (line), <polyline> (polyline), and <polygon> (polygon) are used to draw graphics. Each element uses attributes such as x, y, width, height, cx, cy, r, rx, ry, and points to define its position and size, while fill and stroke attributes define color and line styles. SVG declaratively defines shapes, with each shape being a DOM element, whereas Canvas uses JavaScript to draw procedurally.