ゆるゆるプログラミング

・円・楕円描画

ここでは、円・楕円の輪郭を描画する方法を解説します。

円・楕円は、円・楕円を含む長方形の左上の座標(x,y)と幅widthと高さheightを指定して描画します。幅widthと高さheightに同じ値を指定すると円が描画され、違う値を指定したときは楕円が表示されます。

以下のメソッドは、円・楕円の輪郭を描画するものです。

Graphics.drawOvalメソッド

public abstract void drawOval( int x, int y, int width, int height )
■楕円の輪郭線を描きます。

  パラメータ x      : 描画する楕円の左上隅のx座標
        y      : 描画する楕円の左上隅のy座標
        width  : 描画する楕円の幅
        height : 描画する楕円の高さ

  戻り値     なし

楕円の輪郭描画

幅widthと高さheightを同じ値にすると円の輪郭が描画されます。

円の輪郭描画

ここから、円・楕円を描画する方法をJavaのソースコード例で説明していきます。

GR_Oval1.java ← クリックしてダウンロードページに移動
001:    import java.awt.*;
002:    import javax.swing.*;
003:    
004:    public class GR_Oval1 {
005:    	public static void main(String[] args) {
006:    		JFrame frame = new JFrame();
007:    
008:    		// // タイトル名を設定
009:    		frame.setTitle( "タイトル" );
010:    
011:    		// フレームの大きさを設定
012:    		frame.setSize( 256, 256 );
013:    
014:    		// ”×”ボタンを押した時の処理を設定
015:    		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
016:    
017:    		// フレームにパネルを追加
018:    		MyPanel panel = new MyPanel();
019:    		frame.getContentPane().add( panel );
020:    
021:    		// フレームを表示
022:    		frame.setVisible( true );
023:    	}
024:    }
025:    
026:    
027:    // JPanelを継承したMyPanelを作成
028:    class MyPanel extends JPanel {
029:    	public MyPanel() {
030:    		// 背景色を黒(black)に設定
031:    		setBackground( Color.black );
032:    	}
033:    
034:    
035:    	// 描画
036:    	public void paintComponent( Graphics g ) {
037:    		super.paintComponent( g );
038:    
039:    		// 円の輪郭の色を青(blue)に設定
040:    		g.setColor(Color.blue );
041:    		// 円を描画
042:    		g.drawOval( 20, 20, 80, 80 );
043:    
044:    		// 楕円の輪郭の色を黄色(yellow)に設定
045:    		g.setColor(Color.yellow );
046:    		// 楕円を描画
047:    		g.drawOval( 120, 40, 90, 160 );
048:    	}
049:    }

GR_Oval1.javaの実行結果

円と楕円の輪郭の実行結果

ここからは、このソースコードを上から順番に解説していきます。

001:    import java.awt.*;
002:    import javax.swing.*;

Javaのクラスライブラリの中から「java.awt」と 「javax.swing」というパッケージにあるクラスを、このプログラム内で使うために記述します。

004:    public class GR_Oval1 {

クラス名を、GR_Oval1としています。

005:    	public static void main(String[] args) {

このmainメソッドからプログラムを実行します。

006:    		JFrame frame = new JFrame();

フレームの表示は、JFrameクラスを使います。

008:    		// // タイトル名を設定
009:    		frame.setTitle( "タイトル" );

ウィンドウに表示するタイトルを指定します。この例では、タイトルという文字列を指定しています。

011:    		// フレームの大きさを設定
012:    		frame.setSize( 256, 256 );

フレーム全体のサイズを指定します。この例では、フレーム全体(タイトルバーと縁を含む)のサイズは256x256ピクセルです。

フレームサイズ

014:    		// ”×”ボタンを押した時の処理を設定
015:    		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

"×"ボタンを押したときの処理を指定します。JFrame.EXIT_ON_CLOSEは、フレームを閉じることを意味しています。

017:    		// フレームにパネルを追加
018:    		MyPanel panel = new MyPanel();
019:    		frame.getContentPane().add( panel );

フレームにパネル(Jpanelクラス)を割り当てます。パネルは、グラフィック表示やボタンなどを乗せられる板のようなものです。ここでは、JPanelクラスを継承したMyPanelクラスを作り、そのクラスの中でラインを描画します。MyPanelクラスのソースは27行目から書いています。

027:    // JPanelを継承したMyPanelを作成
028:    class MyPanel extends JPanel {

JPanelクラスを継承したMyPanelクラスです。

029:    	public MyPanel() {
030:    		// 背景色を黒(black)に設定
031:    		setBackground( Color.black );

パネルの背景色を黒にしています。public MyPanel()は、MyPanelクラスが作られる(実行される)ときに1回だけ呼ばれるメソッドです。public クラス名( 引数 )を書くことで、最初に実行するメソッドを作ることが出来ます。

035:    	// 描画
036:    	public void paintComponent( Graphics g ) {
037:    		super.paintComponent( g );

パネルの描画メソッドです。このpublic void paintComponent( Graphics g )メソッドは、パネルの表示が必要なときに呼び出されるメソッドです。メソッド名と引数は、変えないでください。

039:    		// 円の輪郭の色を青(blue)に設定
040:    		g.setColor(Color.blue );
041:    		// 円を描画
042:    		g.drawOval( 20, 20, 80, 80 );

ここから円の輪郭の描画です。ここでは、輪郭線の色を青に設定しています。drawOvalメソッドに左上隅の座標(20,20)、幅80、高さ80を与えて円を描画しています。この場合は、幅と高さが同じなので円になります。

Graphics.setColorメソッド

public abstract void setColor( Color c )
■このグラフィックスコンテキストの現在の色を、指定された色に設定します。

  パラメータ c : 色

  戻り値     なし

044:    		// 楕円の輪郭の色を黄色(yellow)に設定
045:    		g.setColor(Color.yellow );
046:    		// 楕円を描画
047:    		g.drawOval( 120, 40, 90, 160 );

ここから楕円の輪郭の描画です。ここでは、輪郭線の色を黄色に設定しています。drawOvalメソッドに左上隅の座標(120,40)、幅90、高さ160を与えて縦長の楕円を描画しています。

■関連コンテンツ

フレームの表示 図形を表示するフレーム(枠)の表示方法について解説
背景色の変更 図形を表示するフレームの背景色の変更方法について解説
ライン描画 ラインを描画する方法解説

■新着情報

2020.09.03 お札とコインの数 必要なお札と硬貨の枚数?
2020.08.27 ポーカーの役判定 ポーカーの役を判定
2020.08.25 ゾロ目の出る確率 サイコロの目のでる確率は?
2020.08.24 文字列配列をint配列に変換 String[]→int[]
2020.08.24 文字列配列をdouble配列に変換 String[]→double[]
2020.08.19 キーボード入力値を配列に格納 キーボード入力→配列
2020.08.19 キーボード入力値をリストに格納 キーボード入力→リスト
2020.08.19 キーボード入力 ScannerクラスとSystem.inを使用

■広告

フィギュア予約最大25%OFF+ポイント5%還元!ホビーサーチ

~約8,000名の受講生と80社以上の導入実績~ 企業向けプログラミング研修ならCodeCamp

日本最大級ショッピングサイト!お買い物なら楽天市場

 

 

 

 

 

 

 

 

 

Topへ