SYNCERのロゴ
アイキャッチ画像

円を描く方法

Canvasで円を描くには、コンテキストのarc()を利用しましょう。

サンプルコード

座標(100,100)を中心に、半径50の円を描くサンプルコードです。開始角度と終了角度はラジアン単位で指定しなければいけません。0度は円の中心の右側で、そこから終了角度まで時計回りに描くか、反時計回りに描くかを指定できます。塗りつぶしは開始座標と終了座標を結んだ枠内が対象で、パックマンのようにはなりません。

JavaScript

// element = <canvas width="200" height="200"></canvas>
var context = element.getContext( "2d" ) ;

// パスをリセット
context.beginPath () ;

// 円の中心座標: (100,100)
// 半径: 50
// 開始角度: 0度 (0 * Math.PI / 180)
// 終了角度: 360度 (360 * Math.PI / 180)
// 方向: true=反時計回りの円、false=時計回りの円
context.arc( 100, 100, 50, 0 * Math.PI / 180, 360 * Math.PI / 180, false ) ;

// 塗りつぶしの色
context.fillStyle = "rgba(255,0,0,0.8)" ;

// 塗りつぶしを実行
context.fill() ;

// 線の色
context.strokeStyle = "purple" ;

// 線の太さ
context.lineWidth = 8 ;

// 線を描画を実行
context.stroke() ;

デモ

開始角度、終了角度、方向(時計回りか反時計回り)の指定がどのように作用するのか、コードを編集して確認してみましょう。

塗りつぶしと線

// element = <canvas id="target" width="200" height="200"></canvas>
var element = document.getElementById( "target" ) ;
var context = element.getContext( "2d" ) ;

context.beginPath () ;

context.arc( 100, 100, 50, 0 * Math.PI / 180, 360 * Math.PI / 180, false ) ;
context.fillStyle = "rgba(255,0,0,0.8)" ;
context.fill() ;

context.strokeStyle = "purple" ;
context.lineWidth = 8 ;
context.stroke() ;

200x200のキャンパスです。

塗りつぶし

// element = <canvas id="target" width="200" height="200"></canvas>
var element = document.getElementById( "target" ) ;
var context = element.getContext( "2d" ) ;

context.beginPath () ;

context.arc( 100, 100, 50, 0 * Math.PI / 180, 360 * Math.PI / 180, false ) ;
context.fillStyle = "rgba(255,0,0,0.8)" ;
context.fill() ;

200x200のキャンパスです。

// element = <canvas id="target" width="200" height="200"></canvas>
var element = document.getElementById( "target" ) ;
var context = element.getContext( "2d" ) ;

context.beginPath () ;

context.arc( 100, 100, 50, 0 * Math.PI / 180, 360 * Math.PI / 180, false ) ;
context.strokeStyle = "blue" ;
context.lineWidth = 1 ;
context.stroke() ;

200x200のキャンパスです。

  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年8月3日 (木)
コンテンツを公開しました。