直線を描画する(Line2Dクラス)

広告

直線を描画する場合はLine2Dクラスのオブジェクトを使用します。Line2Dクラスはabstractクラスですので実際にはLine2D.Doubleクラス又はLine2D.Floatクラスを使用します。

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

Line2Dクラスは始点座標及び終点座標を指定することで直線を作成します。コンストラクタの1つは次の通りです。

Line2D.Double line = 
  new Line2D.Double(始点x座標, 始点y座標, 終点x座標, 終点y座標)

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

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

  g2.draw(new Line2D.Double(30.0d, 70.0d, 100.0d, 60.0d));
}

※「fill」メソッドの引数にLine2Dクラスのオブジェクトを指定してもエラーとはなりませんが、何も表示されません。

サンプルプログラム

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

ShapeTest1.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;

public class ShapeTest1 extends JPanel{

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

    ShapeTest1 app = new ShapeTest1();
    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);
    g2.draw(new Line2D.Double(30.0d, 50.0d, 180.0d, 140.0d));

    g2.setPaint(Color.PINK);
    BasicStroke wideStroke = new BasicStroke(4.0f);
    g2.setStroke(wideStroke);
    g2.draw(new Line2D.Double(30.0d, 120.0d, 250.0d, 70.0d));
  }
}

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

直線を描画する

( Written by Tatsuo Ikura )