import java.io.* import java.awt.* import java.awt.geom.* import java.awt.image.* import javax.imageio.* // ギアを描画する def img = new BufferedImage( 200, 200, BufferedImage.TYPE_INT_ARGB ) def gr = img.createGraphics() gr.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON ) gr.setColor(new Color(0x948E73)) def path = new Path2D.Double(Path2D.WIND_EVEN_ODD) // 分割数 def par = 10 // 中心x def cx = img.getWidth()/2 // 中心y def cy = img.getHeight()/2 // 半径(大) def rad1 = 90 // 半径(小) def rad2 = 70 // 穴の半径 def rad3 = 30 def dr1=0 def dr2=360/(par*2) path.moveTo( (int)(cx-Math.cos(2*Math.PI*dr1/360)*rad1), (int)(cy-Math.sin(2*Math.PI*dr1/360)*rad1) ) while(dr2<360){ path.lineTo( (int)(cx-Math.cos(2*Math.PI*dr1/360)*rad1), (int)(cy-Math.sin(2*Math.PI*dr1/360)*rad1) ) path.lineTo( (int)(cx-Math.cos(2*Math.PI*dr1/360)*rad2), (int)(cy-Math.sin(2*Math.PI*dr1/360)*rad2) ) path.lineTo( (int)(cx-Math.cos(2*Math.PI*dr2/360)*rad2), (int)(cy-Math.sin(2*Math.PI*dr2/360)*rad2) ) path.lineTo( (int)(cx-Math.cos(2*Math.PI*dr2/360)*rad1), (int)(cy-Math.sin(2*Math.PI*dr2/360)*rad1) ) dr1 += 360/par dr2 += 360/par } path.append(new Ellipse2D.Double(cx-rad3, cy-rad3, rad3*2, rad3*2), false) gr.fill(path) gr.dispose() ImageIO.write(img, "png", new File("drawgear.png"))
出力画像
動作環境
groovy 1.8.6, JDK7 update4
No comments:
Post a Comment