各設定値を取得する

広告

Arc2D.Doubleクラスで座標や開始角度などの値を取得するにはメソッドを使って取得する方法とフィールドの値を参照する方法があります。まずはメソッドで取得する方法を確認します。

まず座標を取得してみます。Arc2D.Doubleクラスで用意されている「getX」メソッドと「getY」メソッドを使います。

getXメソッド:

表示枠矩形の左上隅の X 座標を double 精度で返します。 弧はこの 
RectangularShape の表示枠矩形と部分的に内接していることに注意してくだ
さい。

戻り値:
  表示枠矩形の 左上隅の X 座標

getYメソッド:

表示枠矩形の左上隅の Y 座標を double 精度で返します。 弧はこの 
RectangularShape の表示枠矩形と部分的に内接していることに注意してくだ
さい。

戻り値:
  表示枠矩形の 左上隅の Y 座標

「getX」メソッドは戻り値としてオブジェクトに保存されているX座標を表すdouble型の値を取得できます。「getY」メソッドは戻り値としてオブジェクトに保存されているY座標を表すdouble型の値を取得できます。

次に幅と高さを取得してみます。Arc2D.Doubleクラスで用意されている「getWidth」メソッドと「getHeight」メソッドを使います。

getWidthメソッド:

表示枠矩形の幅を double 精度で返します。 弧はこの RectangularShape の表
示枠矩形と部分的に内接していることに注意してください。

戻り値:
  表示枠矩形の幅

getHeightメソッド:

表示枠矩形の高さを double 精度で返します。 弧はこの RectangularShape の
表示枠矩形と部分的に内接していることに注意してください。

戻り値:
  表示枠矩形の高さ

「getWidth」メソッドは戻り値としてオブジェクトに保存されている幅を表すdouble型の値を取得できます。「getHeight」メソッドは戻り値としてオブジェクトに保存されている高を表すdouble型の値を取得できます。

次に開始角度と使用角度を取得してみます。Arc2D.Doubleクラスで用意されている「getAngleStart」メソッドと「getAngleExtent」メソッドを使います。

getAngleStartメソッド:

弧の始角を返します。

戻り値:
  弧の始角 (度) を表す double 値

getAngleExtentメソッド:

弧の角の大きさを返します。

戻り値:
  弧の角の大きさ (度単位) を表す double 値

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

Arc2D.Double arc
 = new Arc2D.Double(10.0d, 10.0d, 20.0d, 12.0d, 45.0d, 45.0d);

double x = arc.getX();
double y = arc.getY();
double w = arc.getWidth();
double h = arc.getHeight();
double s = arc.getAngleStart();
double e = arc.getAngleExtent();

フィールドを参照する

Arc2D.Doubleではフィールドとして「x」「y」「width」「height」「start」「extent」と言う6つのdouble型の値を保持するフィールドを持っておりオブジェクトから直接参照することが出来ます。

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

Arc2D.Double arc
 = new Arc2D.Double(10.0d, 10.0d, 20.0d, 12.0d, 45.0d, 45.0d);

double x = arc.x;
double y = arc.y;
double w = arc.width;
double h = arc.height;
double s = arc.start;
double e = arc.extent;

サンプルプログラム

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

Arc2DTest2.java

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

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

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

    Arc2D.Double arc = new Arc2D.Double();
    arc.setArc(20.0d, 20.0d, 250.0d, 140.0d, 45.0d, 90.0d, Arc2D.PIE);

    g2.draw(arc);

    double x = arc.getX();
    double y = arc.getY();
    double w = arc.getWidth();
    double h = arc.getHeight();
    double s = arc.getAngleStart();
    double e = arc.getAngleExtent();

    g2.draw(new Rectangle2D.Double(x, y, w, h));
    g2.drawString("Start:" + s, 160, 100);
    g2.drawString("Extent:" + e, 160, 120);
  }
}

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

座標や幅などを取得する

( Written by Tatsuo Ikura )