頂点を追加する

広告

コンストラクタで作成された多角形に対して新しい頂点を追加する方法を確認します。Polygonクラスで用意されている「addPoint」メソッドを使います。

この Polygon に指定された座標を追加します。 

この Polygon のバウンディングボックスを計算する getBounds または 
contains などの演算がすでに実行されている場合、このメソッドはバウンディ
ングボックスを更新します。

パラメータ:
  x - 指定された X 座標
  y - 指定された Y 座標

新しい頂点の座標を1番目の引数と2番目の引数でint型の値として指定します。

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

int[] xpoints = {30, 150, 170, 120, 30};
int[] ypoints = {20, 40, 140, 110, 80};
int npoints = xpoints.length;
Polygon polygon = new Polygon(xpoints, ypoints, npoints);

polygon.addPoint(40, 50);

サンプルプログラム

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

PolygonTest2.java

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

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

    PolygonTest2 app = new PolygonTest2();
    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);

    int[] xpoints = {60, 180, 200, 130, 60};
    int[] ypoints = {20, 40, 120, 140, 110};
    int npoints = xpoints.length;
    Polygon polygon = new Polygon(xpoints, ypoints, npoints);

    g2.draw(polygon);

    polygon.addPoint(40, 70);

    g2.setPaint(Color.PINK);
    g2.draw(polygon);
  }
}

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

多角形に新しい頂点を追加する

今回のサンプルでは一度描画した多角形に新しい頂点を加えた後に色を変えて再度多角形を描画しています。

( Written by Tatsuo Ikura )