Javaでイメージ描画 2

書く場所が確保出来たら、単純なラインを引いてみます。
java.awt.Graphics
にはdrawLine(int, int, int, int)
というメソッドがあるのですが、ぱっと見ただけでは引数がなんなのかわからないので、別の方法で書きます。

直線をあらわすクラスにjava.awt.geom.Line2D
というクラスがあります。個人的には前述のメソッドよりも理解しやすいので、これで作成します。

BufferedImage image = new BufferedImage(500, 500, BufferedImage.TYPE_INT_ARGB);
Graphics2d gdImage = image.createGraphics();
 
Point start = new Point(0, 0);
Point end = new Point(500, 500);
 
Line2D line = new Lind2D.Float(start, end);
 
gdImage.setPaint(Color.BLUE);
gdImage.setStroke(new BasicStroke());
gdImage.draw(line);

Pointクラスは、1点の座標を
表すクラスでx, y座標をバラバラに管理するよりかは効率的でしょう。
その後、どんな色で、どんな形状で(線なら実線とか破線とか)を指定してあげます。
これらの属性は、セットしたら変更されるまでずっと持っている属性ですので、
たとえば青色の実線を描いた後に赤色の破線を描きたい場合は、描画の前にセットしなおします。

gdImage.setPaint(Color.BLUE);
gdImage.setStroke(new BasicStroke());
gdImage.draw(line);
 
gdImage.setPaint(Color.RED);
gdImage.setStroke(new BasicStroke(1, BasicStroke.JOIN_BEVEL, BasicStroke.CAP_BUTT));
gdImage.draw(line);

結局、直線の場合はLine2Dオブジェクトを操作したように、同じようにして以下のような形状の形を描画することが出来ます。
四角形:Rectangle2D
角丸四角形:RoundRectangle2D
楕円:Ellipse2D
弧:Arc2D
3次曲線セグメント:CubicCurve2D
2次曲線セグメント:QuadCurve2D

そういえば正円とか八角形とかはどうするんだ?と思ったので勉強してきます。
続きます(たぶん)


Leave a Reply