任意のポリゴンを描画する方法

ここでは Java 2D API の GeneralPath を利用して、ポリゴンを描画する方法を紹介します。

ちなみに、描画については、線や曲線の組み合わせようによって様々な描き方があります。

逆に、この方法しかない、という場合はほとんどないと思います。

今回の例でも他のメソッドの紹介も考えたほうが良いかと思ったのですが、かなり柔軟に応用できる方法として、GeneralPath を取り上げました。

ここで作るサンプルは次の通りです。三角形を描画しています。

このコードは次の通りです。

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.GeneralPath;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class Panel1 extends JPanel {
  
  @Override
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g;
    
    BasicStroke stroke = new BasicStroke(5.0f);
    g2d.setStroke(stroke);
    g2d.setColor(Color.BLUE);
    drawTriangle(g2d, 120, 100, 50);
  }
  
  public void drawTriangle(
    Graphics2D g, float r, float x0, float y0){
    
    float A = (float)(
      r * Math.sin(Math.toRadians(30.0)));
    float B = (float)(
      r * Math.cos(Math.toRadians(30.0)));
    float x1 = x0 + A;
    float x2 = x0 - A;
    float y1 = y0 + B;
    float y2 = y0 + B;
    
    GeneralPath path = new GeneralPath();
    path.moveTo(x0, y0);
    path.lineTo(x1, y1);
    path.lineTo(x2, y2);
    path.closePath();
    g.draw(path);
    
  }
  
}

三角形の頂点を基点に、正三角形を描いています。座標は (x0, y1), (x1, y1), (x2, y2) の3点です。

これらを GeneralPath を使って描いています。moveTo で描画せずに基点に移動、そこから (x1, y1) へ lineTo で描画。さらに (x2, y2) へ lineTo で描画。最後に closePth で (x2, y2) と (x0, y0) をつなげています。

このように座標さえ指定できれば、GeneralPath を使って好きな図を描画することが可能です。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Java 入門