Archive for 26th 5月 2009

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

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


オープンハウス

友達が勤めている建築デザイン事務所でオープンハウスを開催するということでしたのでお邪魔してきました。

あいにく雨が降っていましたが、スタッフの皆さんに気持ち良く迎えていただいたのでじっくり見ることが出来ました。
でも、特に写真等を撮ることも出来ませんでしたので何も紹介は出来ないのですが、こちらのブログに変更前、変更後と記載されています。外見も結構変わっていますが、内部もマンションの展示会なんかでは見られないようなちょいとしたこだわりがいくつもありました。

特にまあビックリしたのは、いきなり社長さんが接客をしてくれたことです。
しかし、こちらはあまり良く分かっていないので、色々御説明頂いたのに良いリアクションが出来ませんでした。

出来れば戸建がいいなぁとは思っているのですが、セキュリティとか、虫(夏の蚊とか)はやっぱり戸建だと対処が必要なんだろうなと思います。
でも縁側付の庭で子供と花火をやったりするのもいいだろうなぁと思います。

オープンハウスを開催してくださったネイチャーデコールの皆様、ありがとうございました。