プロが教える店舗&オフィスのセキュリティ対策術

javaのアプレットについてですが、下のURLの16角のダイヤモンド図形で、
URLのソースのように、繰り返し描画せず、色もつけないで、単純に16個の頂点を持つ
ダイヤモンド図形を描画する場合、URLのソースをどういじればよいのでしょうか。

ソースコードをそぎ落として、16頂点のダイヤモンド図形を単純に描画するコードを
ぬきとっていただけませんでしょうか。
よろしくお願いします。

http://www.piclist.com/images/www/hobby_elec/jav …

A 回答 (2件)

//繰り返さないならアプレットでなくてもいいのでmainにしてあります。


//結果はc:\test.jpgにできます。

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import java.lang.Math;


public class Test9 {

public static void main(String[] args) {

int r=100;
int n = 16;
int x, y, x1, y1;

try {
BufferedImage image=new BufferedImage(r*2+10,r*2+10,BufferedImage.TYPE_INT_RGB);
Graphics2D g2d=image.createGraphics();
g2d.setBackground(Color.WHITE);
g2d.clearRect(0,0,r*2+10,r*2+10);
g2d.setColor(Color.BLACK);

x1 = r;
y1 = 0;

for ( double i = 360.0 / n; i <= 360.0; i += 360.0 / n ) {
x = (int) ( r * Math.cos( i * Math.PI / 180 ) );
y = (int) ( r * Math.sin( i * Math.PI / 180 ) );
g2d.drawLine( x1 + r + 5, y1 * (-1) + r + 5, x + r + 5, y * (-1) + r + 5 );

x1 = x; y1 = y;
}

ImageIO.write(image, "JPEG", new File("c:\\test.jpg"));
} catch(Exception e) { e.printStackTrace(); }
}
}

この回答への補足

回答ありがとうございます!
このプログラムでは、正n角形をかくだけで、各頂点から各頂点に向けた線分がつくれないのですが、その点について教えていただくことはできないでしょうか

補足日時:2013/06/20 15:28
    • good
    • 0

そのプログラム、コメントも丁寧に書いてあるので、読めばわかると思うのですが。



例えば、線の色なら
color = new Color( red,green,blue ); /* 線の色設定       */
とありますよね?
red,green,blueを調べると
red = (int) ( Math.random()*256 ); /* 赤色成分ランダム生成  */
green = (int) ( Math.random()*256); /* 緑色成分ランダム生成  */
blue = (int) (Math.random()*256); /* 青色成分ランダム生成  */
と、ランダムに決めているってありますよね?これを固定値にすれば、決めた色になるとわかりませんか?

例えば、繰り返し。
繰り返すには、ループ構造を使います。このプログラムではforとwhileが使われています。
ループの外にあれば、繰り返し実行されません。

このプログラムのループは、線の座標を計算するためのものと、描画を繰り返すためのものがあります。
描画を繰り返すループから、描画部分を外に出せば、1回した描画しなくなるはずです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!