- ベストアンサー
java アプレット
javaのアプレットについてですが、下のURLの16角のダイヤモンド図形で、 URLのソースのように、繰り返し描画せず、色もつけないで、単純に16個の頂点を持つ ダイヤモンド図形を描画する場合、URLのソースをどういじればよいのでしょうか。 ソースコードをそぎ落として、16頂点のダイヤモンド図形を単純に描画するコードを ぬきとっていただけませんでしょうか。 よろしくお願いします。 http://www.piclist.com/images/www/hobby_elec/java24_2.htm
- みんなの回答 (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(); } } }
その他の回答 (1)
- kmee
- ベストアンサー率55% (1857/3366)
そのプログラム、コメントも丁寧に書いてあるので、読めばわかると思うのですが。 例えば、線の色なら 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回した描画しなくなるはずです。
補足
回答ありがとうございます! このプログラムでは、正n角形をかくだけで、各頂点から各頂点に向けた線分がつくれないのですが、その点について教えていただくことはできないでしょうか