import java.awt.*;
import java.awt.event.*; import javax.swing.*; public class FiveStars_4 extends JFrame
{ gFiveStars_4 gfs_4 = new gFiveStars_4(); public FiveStars_4() { this.setSize(800, 800); setLocation(100, 100); this.add(gfs_4); this.setVisible(true); } public static void main(String[] args) { new FiveStars_4(); } } class gFiveStars_4 extends JPanel
{ public gFiveStars_4() { this.setSize(800, 800); } public void gFiveStars_4(Graphics g, int x0, int y0, int r, String f) { double ch=72*Math.PI/180;//圆心角的弧度数 int x[]=new int[5]; int y[]=new int[5]; for (int i=0;i<5;i++){ x[i]=(int)(x0+r*Math.cos(3*Math.PI/2+i*ch)); y[i]=(int)(y0+r*Math.sin(3*Math.PI/2+i*ch)); } int bx=(int)(x0);//(bx,by)为(x[3],y[3])(x[4],y[4])之间凹点 int by=(int)(y0+r*Math.sin(ch/4)/Math.sin(Math.PI-3*ch/4)); int[] xa={x[0],x[2],bx,x[3]};//定义一个多边形 凹四边形 int[] ya={y[0],y[2],by,y[3]}; int[] xb={x[1],bx,x[4]};//三角形 int[] yb={y[1],by,y[4]}; if(f.equals("fill")) g.setColor(Color.yellow); g.fillPolygon(xa,ya,4); g.fillPolygon(xb,yb,3); if(f.equals("draw")) g.setColor(Color.red); g.drawLine(x[0],y[0],x[2],y[2]); g.drawLine(x[0],y[0],x[3],y[3]); g.drawLine(x[1],y[1],x[3],y[3]); g.drawLine(x[1],y[1],x[4],y[4]); g.drawLine(x[2],y[2],x[4],y[4]); } public void gFiveStars_4(Graphics g, int x0, int y0, int r, int degree, String f)//正五角星
{ double ch=72*Math.PI/180;// double de=Math.abs(degree)*Math.PI/180; //五角星是中心对称图形,角度的实际取值范围在“0——72”之间; int x[]=new int[5];
int y[]=new int[5]; for (int i=0;i<5;i++){ x[i]=(int)(x0+r*Math.cos(3*Math.PI/2+i*ch+de)); y[i]=(int)(y0+r*Math.sin(3*Math.PI/2+i*ch+de)); } int bx=(int)(x0+r*Math.sin(ch/4)/Math.sin(Math.PI-3*ch/4)*Math.cos(Math.PI/2+de)); int by=(int)(y0+r*Math.sin(ch/4)/Math.sin(Math.PI-3*ch/4)*Math.sin(Math.PI/2+de)); int[] xa={x[0],x[2],bx,x[3]};//定义一个多边形 凹四边形 int[] ya={y[0],y[2],by,y[3]}; int[] xb={x[1],bx,x[4]};//三角形 int[] yb={y[1],by,y[4]}; if(f.equals("fill")) { g.setColor(Color.green); g.fillPolygon(xa,ya,4); g.fillPolygon(xb,yb,3); } if(f.equals("draw")) { g.setColor(Color.blue); g.drawLine(x[0],y[0],x[2],y[2]); g.drawLine(x[0],y[0],x[3],y[3]); g.drawLine(x[1],y[1],x[3],y[3]); g.drawLine(x[1],y[1],x[4],y[4]); g.drawLine(x[2],y[2],x[4],y[4]); } } public void gFiveStars_4(Graphics g, int x0, int y0, int r, int degree, String f, String s, int x1, int y1) { double ch=72*Math.PI/180; double de=Math.abs(degree)*Math.PI/180; //五角星是中心对称图形,角度的实际取值范围在“0——72”之间; int x[]=new int[5];
int y[]=new int[5]; for (int i=0;i<5;i++){ x[i]=(int)(x0+r*Math.cos(3*Math.PI/2+i*ch+de)); y[i]=(int)(y0+r*Math.sin(3*Math.PI/2+i*ch+de)); } int bx=(int)(x0+r*Math.sin(ch/4)/Math.sin(Math.PI-3*ch/4)*Math.cos(Math.PI/2+de)); int by=(int)(y0+r*Math.sin(ch/4)/Math.sin(Math.PI-3*ch/4)*Math.sin(Math.PI/2+de)); int[] xa={x[0],x[2],bx,x[3]};//定义一个多边形 凹四边形 int[] ya={y[0],y[2],by,y[3]}; int[] xb={x[1],bx,x[4]};//三角形 int[] yb={y[1],by,y[4]}; if(f.equals("fill")) { g.setColor(Color.red); g.fillPolygon(xa,ya,4); g.fillPolygon(xb,yb,3); } if(f.equals("draw")) { g.setColor(Color.yellow); g.drawLine(x[0],y[0],x[2],y[2]); g.drawLine(x[0],y[0],x[3],y[3]); g.drawLine(x[1],y[1],x[3],y[3]); g.drawLine(x[1],y[1],x[4],y[4]); g.drawLine(x[2],y[2],x[4],y[4]); } g.drawString(s, x1, y1); }
public void paint(Graphics g)
{ gFiveStars_4(g, 200, 500, 100, "fill"); gFiveStars_4(g, 200, 500, 100, "draw"); gFiveStars_4(g, 200, 200, 100, 40, "fill"); gFiveStars_4(g, 200, 200, 100,40, "draw"); gFiveStars_4(g, 600, 600, 100, 60, "fill", "FIVESTAR",500,500); gFiveStars_4(g, 600, 600, 100, 60, "draw", "FIVESTAR",280,280); } }
|
|