第14章课后答案

一、问答题

1.2个参数。

2.6个参数。

3.7个参数。

4.(1)创建AffineTransform对象,(2)进行旋转操作,(3)绘制旋转的图形。

二、编写程序

1.  import java.awt.*;

import javax.swing.*;

class MyCanvas extends Canvas {

  static int pointX[]=new int[5],

       pointY[]=new int[5];

   public void paint(Graphics g){

      g.translate(200,200) ;    //进行坐标变换,将新的坐标原点设置为(200,200)。

      pointX[0]=0;

      pointY[0]=-120;

      double arcAngle=(72*Math.PI)/180;

      for(int i=1;i<5;i++) {

        pointX[i]=(int)(pointX[i-1]*Math.cos(arcAngle)-pointY[i-1]*Math.sin(arcAngle));

        pointY[i]=(int)(pointY[i-1]*Math.cos(arcAngle)+pointX[i-1]*Math.sin(arcAngle));

      }

      g.setColor(Color.red);

      intstarX[]={pointX[0],pointX[2],pointX[4],pointX[1],pointX[3],pointX[0]};

      intstarY[]={pointY[0],pointY[2],pointY[4],pointY[1],pointY[3],pointY[0]};

     g.drawPolygon(starX,starY,6);

   }

}

public class E {

   public static void main(Stringargs[]) {

      JFrame f=new JFrame();

      f.setSize(500,450);

      f.setVisible(true);

      MyCanvas canvas=newMyCanvas();

     f.add(canvas,"Center");

      f.validate();

     f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

  }

}

2.   import java.awt.*;

import javax.swing.*;

import java.awt.geom.*;

class MyCanvas extends Canvas {

   public void paint(Graphics g){

     g.setColor(Color.red) ;

      Graphics2Dg_2d=(Graphics2D)g;

      QuadCurve2D quadCurve=

      new  QuadCurve2D.Double(2,10,51,90,100,10);

      g_2d.draw(quadCurve);

     quadCurve.setCurve(2,100,51,10,100,100);

      g_2d.draw(quadCurve);

   }

}

public class E {

   public static void main(Stringargs[]) {

      JFrame f=new JFrame();

      f.setSize(500,450);

      f.setVisible(true);

      MyCanvas canvas=newMyCanvas();

     f.add(canvas,"Center");

      f.validate();

     f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

  }

}

3.   import java.awt.*;

import javax.swing.*;

import java.awt.geom.*;

class MyCanvas extends Canvas {

   public void paint(Graphics g){

      g.setColor(Color.red) ;

      Graphics2Dg_2d=(Graphics2D)g;

      CubicCurve2D cubicCurve=

      newCubicCurve2D.Double(0,70,70,140,140,0,210,70);

      g_2d.draw(cubicCurve);

   }

}

public class E {

   public static void main(Stringargs[]) {

      JFrame f=new JFrame();

      f.setSize(500,450);

      f.setVisible(true);

      MyCanvas canvas=newMyCanvas();

     f.add(canvas,"Center");

      f.validate();

      f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

  }

}

4.   import java.awt.*;

import javax.swing.*;

import java.awt.geom.*;

class Flower extends Canvas

{  public void paint(Graphics g)

   {  Graphics2D g_2d=(Graphics2D)g;

      //花叶两边的曲线: 

      QuadCurve2D

      curve_1=new  QuadCurve2D.Double(200,200,150,160,200,100);

      CubicCurve2D curve_2=

      new CubicCurve2D.Double(200,200,260,145,190,120,200,100);

      //花叶中的纹线:

      Line2D line=newLine2D.Double(200,200,200,110); 

      QuadCurve2D leaf_line1=

      new  QuadCurve2D.Double(200,180,195,175,190,170);

      QuadCurve2D leaf_line2=

      new  QuadCurve2D.Double(200,180,210,175,220,170);

      QuadCurve2D leaf_line3=

      new  QuadCurve2D.Double(200,160,195,155,190,150);

      QuadCurve2D leaf_line4=

      new QuadCurve2D.Double(200,160,214,155,220,150);  

      //利用旋转来绘制花朵: 

      AffineTransform trans=newAffineTransform();

      for(int i=0;i<6;i++)

      {   trans.rotate(60*Math.PI/180,200,200);

         g_2d.setTransform(trans);

          GradientPaintgradient_1=

          newGradientPaint(200,200,Color.green,200,100,Color.yellow);

         g_2d.setPaint(gradient_1);

          g_2d.fill(curve_1);

          GradientPaintgradient_2=new

         GradientPaint(200,145,Color.green,260,145,Color.red,true);

         g_2d.setPaint(gradient_2);

          g_2d.fill(curve_2);

          Color c3=newColor(0,200,0); g_2d.setColor(c3);

          g_2d.draw(line);

          g_2d.draw(leaf_line1);g_2d.draw(leaf_line2); 

          g_2d.draw(leaf_line3);g_2d.draw(leaf_line4);

      }

      //花瓣中间的花蕾曲线:

      QuadCurve2D center_curve_1=

      newQuadCurve2D.Double(200,200,190,185,200,180);

      AffineTransform trans_1=newAffineTransform();

      for(int i=0;i<12;i++)

      {  trans_1.rotate(30*Math.PI/180,200,200);

        g_2d.setTransform(trans_1);

         GradientPaintgradient_3=

         newGradientPaint(200,200,Color.red,200,180,Color.yellow);

        g_2d.setPaint(gradient_3);

        g_2d.fill(center_curve_1);

      }

   }

}

public class E {

   public static void main(String args[]) {

      JFrame f=new JFrame();

      f.setSize(500,450);

      f.setVisible(true);

      Flower canvas=new Flower();

     f.add(canvas,"Center");

      f.validate();

     f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

  }

}

5. import java.awt.*;

import javax.swing.*;

import java.awt.geom.*;

class Moon extends Canvas

{  public void paint(Graphics g)

   { Graphics2D g_2d=(Graphics2D)g;

      Ellipse2D ellipse1=

      new Ellipse2D. Double (20,80,60,60),

      ellipse2=

      new Ellipse2D. Double (40,80,80,80);

      g_2d.setColor(Color.white);

      Area a1=new Area(ellipse1),

           a2=new Area(ellipse2);

      a1.subtract(a2);             //"差"

      g_2d.fill(a1);

   }

}

public class E {

   public static void main(String args[]) {

      JFrame f=new JFrame();

      f.setSize(500,450);

      f.setVisible(true);

      Moon moon=new Moon();

      moon.setBackground(Color.black);

      f.add(moon,"Center");

      f.validate();

      f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

  }

}

猜你喜欢

转载自blog.csdn.net/qq_41045071/article/details/80958365
今日推荐