1 36 37 40 41 package java2d.demos.Arcs_Curves; 42 43 import java.awt.*; 44 import java.awt.geom.Ellipse2D ; 45 import java2d.AnimatingSurface; 46 47 import static java.awt.Color .*; 48 49 50 53 public class Ellipses extends AnimatingSurface { 54 55 private static Color colors[] = { 56 BLUE, CYAN, GREEN, MAGENTA, ORANGE, PINK, RED, 57 YELLOW, LIGHT_GRAY, WHITE }; 58 private Ellipse2D.Float [] ellipses; 59 private double esize[]; 60 private float estroke[]; 61 private double maxSize; 62 63 64 public Ellipses() { 65 setBackground(BLACK); 66 ellipses = new Ellipse2D.Float [25]; 67 esize = new double[ellipses.length]; 68 estroke = new float[ellipses.length]; 69 for (int i = 0; i < ellipses.length; i++) { 70 ellipses[i] = new Ellipse2D.Float (); 71 getRandomXY(i, 20 * Math.random(), 200, 200); 72 } 73 } 74 75 76 public void getRandomXY(int i, double size, int w, int h) { 77 esize[i] = size; 78 estroke[i] = 1.0f; 79 double x = Math.random() * (w-(maxSize/2)); 80 double y = Math.random() * (h-(maxSize/2)); 81 ellipses[i].setFrame(x, y, size, size); 82 } 83 84 85 public void reset(int w, int h) { 86 maxSize = w/10; 87 for (int i = 0; i < ellipses.length; i++ ) { 88 getRandomXY(i, maxSize * Math.random(), w, h); 89 } 90 } 91 92 93 public void step(int w, int h) { 94 for (int i = 0; i < ellipses.length; i++) { 95 estroke[i] += 0.025f; 96 esize[i]++; 97 if (esize[i] > maxSize) { 98 getRandomXY(i, 1, w, h); 99 } else { 100 ellipses[i].setFrame(ellipses[i].getX(), ellipses[i].getY(), 101 esize[i], esize[i]); 102 } 103 } 104 } 105 106 107 public void render(int w, int h, Graphics2D g2) { 108 for (int i = 0; i < ellipses.length; i++) { 109 g2.setColor(colors[i%colors.length]); 110 g2.setStroke(new BasicStroke(estroke[i])); 111 g2.draw(ellipses[i]); 112 } 113 } 114 115 116 public static void main(String argv[]) { 117 createDemoFrame(new Ellipses()); 118 } 119 } 120 | Popular Tags |