多角形を描画する(Polygonクラス)

広告

多角形をを描画する場合はPolygonクラスのオブジェクトを使用します。

※Polygonクラスの詳しい使い方については『Polygonクラス』を参照して下さい。

Polygonクラスは指定した頂点の数からなる多角形を作成します。コンストラクタの1つは次の通りです。

Polygon polygon = new Polygon(頂点のx座標の配列, 頂点のy座標の配列, 頂点数);

具体的には次のように記述します。

public void paintComponent(Graphics g){
  Graphics2D g2 = (Graphics2D)g;

  int[] xpoints1 = {80, 30, 170};
  int[] ypoints1 = {20, 120, 190};
  Polygon polygon1 = new Polygon(xpoints1, ypoints1, xpoints1.length);
  
  g2.draw(polygon1);

  int[] xpoints2 = {30, 150, 170, 120, 30};
  int[] ypoints2 = {20, 40, 140, 110, 80};
  Polygon polygon2 = new Polygon(xpoints2, ypoints2, xpoints2.length);
  
  g2.fill(polygon2);
}

サンプルプログラム

簡単なサンプルを一度試してみます。

ShapeTest8.java

import javax.swing.*;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.*;
import java.awt.Color;
import java.awt.BasicStroke;
import java.awt.Polygon;

public class ShapeTest8 extends JPanel{

  public static void main(String[] args){
    JFrame frame = new JFrame();

    ShapeTest8 app = new ShapeTest8();
    frame.getContentPane().add(app);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds(10, 10, 300, 200);
    frame.setTitle("タイトル");
    frame.setVisible(true);
  }

  public void paintComponent(Graphics g){
    Graphics2D g2 = (Graphics2D)g;

    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
                        RenderingHints.VALUE_ANTIALIAS_ON);

    BasicStroke wideStroke = new BasicStroke(4.0f);
    g2.setStroke(wideStroke);

    int[] xpoints1 = {140, 50, 230};
    int[] ypoints1 = {20, 150, 100};
    Polygon polygon1 = new Polygon(xpoints1, ypoints1, xpoints1.length);

    g2.draw(polygon1);

    BasicStroke normalStroke = new BasicStroke(1.0f);
    g2.setStroke(normalStroke);

    g2.setPaint(Color.PINK);

    int[] xpoints2 = {30, 150, 200, 90, 30};
    int[] ypoints2 = {20, 40, 140, 130, 80};
    Polygon polygon2 = new Polygon(xpoints2, ypoints2, xpoints2.length);

    g2.fill(polygon2);
  }
}

上記をコンパイルした後で実行すると次のように表示されます。

多角形を描画する

( Written by Tatsuo Ikura )