Java基础之在窗口中绘图——绘制星星(StarApplet 1)

Applet程序。

可以把更复杂的几何形状定义为GeneralPath类型的对象。GeneralPath可以是直线、Quad2D曲线和Cubic2D曲线的结合体,甚至可以包含其他GeneralPath对象。

1、绘制星星:

 1 import java.awt.geom.*;
 2 
 3 public class Star {
 4   // Return a path for a star at x,y
 5   public static GeneralPath starAt(float x, float y) {
 6     Point2D.Float point = new Point2D.Float(x, y);
 7     p = new GeneralPath(GeneralPath.WIND_NON_ZERO);
 8     p.moveTo(point.x, point.y);
 9     p.lineTo(point.x + 20.0f, point.y - 5.0f);                         // Line from start to A
10     point = (Point2D.Float)p.getCurrentPoint();
11     p.lineTo(point.x + 5.0f, point.y - 20.0f);                         // Line from A to B
12     point = (Point2D.Float)p.getCurrentPoint();
13     p.lineTo(point.x + 5.0f, point.y + 20.0f);                         // Line from B to C
14     point = (Point2D.Float)p.getCurrentPoint();
15     p.lineTo(point.x + 20.0f, point.y + 5.0f);                         // Line from C to D
16     point = (Point2D.Float)p.getCurrentPoint();
17     p.lineTo(point.x - 20.0f, point.y + 5.0f);                         // Line from D to E
18     point = (Point2D.Float)p.getCurrentPoint();
19     p.lineTo(point.x - 5.0f, point.y + 20.0f);                         // Line from E to F
20     point = (Point2D.Float)p.getCurrentPoint();
21     p.lineTo(point.x - 5.0f, point.y - 20.0f);                         // Line from F to g
22     p.closePath();                                                     // Line from G to start
23     return p;                                                          // Return the path
24   }
25 
26   private static GeneralPath p;                                        // Star path
27 }

2、定义用来绘制星星的Applet:

 1 import javax.swing.*;
 2 import java.awt.*;
 3 
 4 @SuppressWarnings("serial")
 5 public class StarApplet extends JApplet {
 6   // Initialize the applet
 7   @Override
 8   public void init() {
 9     StarPane pane = new StarPane();                                    // Pane containing stars
10     getContentPane().add(pane);                                        // BorderLayout.CENTER is default position
11   }
12 
13   // Class defining a pane on which to draw
14   class StarPane extends JComponent {
15     @Override
16     public void paint(Graphics g) {
17       Graphics2D g2D = (Graphics2D)g;
18       float delta = 60f;                                               // Increment between stars
19       float starty = 0f;                                               // Starting y position
20 
21       // Draw 3 rows of stars
22       for(int yCount = 0 ; yCount < 3 ; yCount++) {
23         starty += delta;                                               // Increment row position
24         float startx = 0f;                                             // Start x position in a row
25 
26         // Draw a row of 4 stars
27         for(int xCount = 0 ; xCount < 4 ; xCount++) {
28           g2D.draw(Star.starAt(startx += delta, starty));
29         }
30       }
31     }
32   }
33 }

3、HTML文件:

 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 2 
 3 <html>     <head>  </head>
 4     <body bgcolor="000000">
 5         <center>
 6             <applet
 7                 code    = "StarApplet.class"
 8                 width    = "360"
 9                 height    = "240"
10                 >
11             </applet>
12         </center>
13     </body>
14 </html>
原文地址:https://www.cnblogs.com/mannixiang/p/3488394.html