基本的なメソッドとプロパティ

基本的なメソッドとプロパティ

 それではCanvasで使える基本的なメソッドとプロパティを見ていきましょう。

 まず、メソッドとしてgetContext()メソッドがあります。これはCanvasを使って図形を描画する際の下地づくりとして実行しなければならないメソッドです。このメソッドを実行することにより2DコンテキストのCanvasRenderingContext2Dオブジェクトが生成されます。また、現在は2dという値しか設定できませんが、将来的にはOpenGL ES APIベースの'3d'コンテキストが追加されるようになり、"3d"という値も指定できるようになる予定のようです。

 はじめに、2dコンテキストのオブジェクトから使うことができる代表的なメソッドを紹介します。

 状態に関するメソッドは以下になります。

・save()メソッド…描画状態をスタックへ保存する
・restore()メソッド…保存された描画状態をスタックから取り出す

 パスを描画するためメソッドは以下になります。

・beginPath()メソッド…サブパスの描画を開始する
・moveTo()メソッド…サブパスの描画の初期座標をセットする
・lineTo()メソッド…直線を描画する
・arc()メソッド…中心座標と半径を設定して円弧を描画する
・rect()メソッド…短形を描画する
・stroke()メソッド…ブラウザ上に図形を描画する

 次に、2dコンテキストのオブジェクトから使うことができる代表的なプロパティを紹介します。

・fillStyle…図形内の色やスタイルを設定する
・strokeStyle…図形の輪郭の色やスタイルを設定する
・shadowBlur…図形の周りにぼかしの処理を加える
・font…フォントサイズや種類を設定する

 すべてのメソッド・プロパティの仕様に関しては、WHATWGのサイト(http://www.whatwg.org/specs/web-apps/current-work/#the-2d-context)をご覧ください。

簡単な図形を描いてみる

 それではCanvasで使うメソッドとプロパティを用いて簡単な図形を描いてみましょう。

 まずはじめに簡単な例として、fillRect()メソッドを使って四角形を描画してみます。サンプルファイルはこちらからダウンロードできます(773_1.zip/626 B)。canvas要素のマークアップを行い、そのID名に「rect1」という名前をつけ、DOMを使ったアクセスができるようにしておきます。ダイナミックにcanvasタグ内に図形を描画するので、タグ内には何も記述しません。



 ページ内容の読み込みが完了の際に発生するonloadイベント受けたあと、drawRect()関数が実行されるようにしておきます。

onload = function(){
drawRect();
};

 getContextで2dコンテキストで使えるメソッドのリファレンスを取得し、その返り値をctxという変数に代入します。そして、2dコンテキストのオブジェクトであるctxのbeginPath()メソッドを実行し、パスを初期化したあと、fillRect()メソッドを用いて短形(長方形)を描画します。fillRectメソッドの各パラメータは以下のようになります。

オブジェクト名.fillRect(x座標, y座標, 短形の幅, 短形の高さ)

 実際のソースコードは図2-2になります。

 次に、arc()メソッドを使って円を描画してみましょう。サンプルファイルはこちらからダウンロードできます(773_2.zip/630 B)。

 基本的な処理フローは四角形を描画する場合と同様です。円の場合はarc()メソッドを使います。arc()メソッドの各パラメータは以下のようになります。

オブジェクト名.arc(円の中心のx座標, 円の中心のy座標, 円の半径, 円弧を描き始める角度, 円弧を描き終える角度,真偽値-trueの場合は半時計周りで描画しfalseの場合は時計回りで描画される)

 円を描画するdrawCircl関数のソースコードは図2-3になります。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30