ddlld345 / 未命名 / Java画五角星

分享

   

Java画五角星

2015-04-07  ddlld345
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);
 }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多
    喜欢该文的人也喜欢 更多

    ×
    ×

    ¥.00

    微信或支付宝扫码支付:

    开通即同意《个图VIP服务协议》

    全部>>