通过java画一个大风车.docx
《通过java画一个大风车.docx》由会员分享,可在线阅读,更多相关《通过java画一个大风车.docx(8页珍藏版)》请在冰豆网上搜索。
通过java画一个大风车
今天的作业我做的是画一个风车:
运行结果:
1首先:
写个Point类:
(作用作为风车的中点)
packagecom.huang.exam;
/**
*
*@author黄燕斌
*@version1.0
*@since2013-05-28
*
*/
publicclassPoint{
privatedoublex;
privatedoubley;
/**
*构造器
*/
publicPoint(){
}
/**
*构造器
*@paramx
*@paramy
*/
publicPoint(doublex,doubley){
this.x=x;
this.y=y;
}
/**
*@returnX
*/
publicdoublegetX(){
returnx;
}
/**
*
*@paramxX
*/
publicvoidsetX(intx){
this.x=x;
}
/**
*
*@returnY
*/
publicdoublegetY(){
returny;
}
/**
*
*@paramyY
*/
publicvoidsetY(inty){
this.y=y;
}
}
2.写一个风车Windmill类
packagecom.huang.exam;
importjava.awt.Color;
importjava.awt.Graphics;
/**
*风车
*@author黄
*@version1.0
*@since2013-05-28
*
*/
publicclassWindmill{
privatePointcenter;
privateintradius;
privateColorcolor;
publicWindmill(){
}
/**
*构造器
*@paramcenter
*@paramradius
*@paramcolor
*/
publicWindmill(Pointcenter,intradius,Colorcolor){
this.radius=radius;
this.center=center;
this.color=color;
}
publicColorgetColor(){
returncolor;
}
publicvoidsetColor(Colorcolor){
this.color=color;
}
publicPointgetCenter(){
returncenter;
}
publicvoidsetCenter(Pointcenter){
this.center=center;
}
publicintgetRadius(){
returnradius;
}
publicvoidsetRadius(intradius){
this.radius=radius;
}
/**
*画风车
*@paramg
*/
publicvoiddraw(Graphicsg){
/**
*通过计算出风车10点的位置
*/
intarrayX[]=newint[10];
intarrayY[]=newint[10];
Pointp1=newPoint(center.getX(),center.getY()+radius);
Pointp3=newPoint(center.getX()+Math.cos(18*Math.PI/180)*radius,center.getY()+Math.sin(18*Math.PI/180)*radius);
Pointp5=newPoint(center.getX()+Math.cos(54*Math.PI/180)*radius,center.getY()-Math.sin(54*Math.PI/180)*radius);
Pointp7=newPoint(center.getX()-Math.cos(54*Math.PI/180)*radius,center.getY()-Math.sin(54*Math.PI/180)*radius);
Pointp9=newPoint(center.getX()-Math.cos(18*Math.PI/180)*radius,center.getY()+Math.sin(18*Math.PI/180)*radius);
doubleT=0.3819;
Pointp2=newPoint(center.getX(),center.getY()-T*radius);
Pointp4=newPoint(center.getX()-Math.cos(18*Math.PI/180)*T*radius,center.getY()-Math.sin(18*Math.PI/180)*T*radius);
Pointp6=newPoint(center.getX()-Math.cos(54*Math.PI/180)*T*radius,center.getY()+Math.sin(54*Math.PI/180)*T*radius);
Pointp8=newPoint(center.getX()+Math.cos(54*Math.PI/180)*T*radius,center.getY()+Math.sin(54*Math.PI/180)*T*radius);
Pointp10=newPoint(center.getX()+Math.cos(18*Math.PI/180)*T*radius,center.getY()-Math.sin(18*Math.PI/180)*T*radius);
arrayX[0]=(int)p1.getX();
arrayY[0]=(int)p1.getY();
arrayX[1]=(int)p2.getX();
arrayY[1]=(int)p2.getY();
arrayX[2]=(int)p3.getX();
arrayY[2]=(int)p3.getY();
arrayX[3]=(int)p4.getX();
arrayY[3]=(int)p4.getY();
arrayX[4]=(int)p5.getX();
arrayY[4]=(int)p5.getY();
arrayX[5]=(int)p6.getX();
arrayY[5]=(int)p6.getY();
arrayX[6]=(int)p7.getX();
arrayY[6]=(int)p7.getY();
arrayX[7]=(int)p8.getX();
arrayY[7]=(int)p8.getY();
arrayX[8]=(int)p9.getX();
arrayY[8]=(int)p9.getY();
arrayX[9]=(int)p10.getX();
arrayY[9]=(int)p10.getY();
g.setColor(color);
g.drawPolygon(arrayX,arrayY,10);
}
}
3.写一个CompantPanel继承JPanel
packagecom.huang.exam;
importjava.awt.Color;
importjava.awt.Graphics;
importjavax.swing.JPanel;
publicclassCompantPanelextendsJPanel{
publicvoidpaintComponent(Graphicsg){
Pointp=newPoint(250,200);
Windmillfs=newWindmill(p,200,Color.blue);
fs.draw(g);
}
}
4.main类
packagecom.huang.exam;
importjavax.swing.JFrame;
publicclassMain{
publicstaticvoidmain(String[]args){
JFramejFrame=newJFrame("大风车");
jFrame.setSize(500,500);
jFrame.setLocationRelativeTo(null);
CompantPanelcp=newCompantPanel();
jFrame.add(cp);
jFrame.setVisible(true);
}
}