2014-10-03 68 views
0

我已經完成了色輪的一些代碼,但是我對如何完成它感到困惑?我也評論了代碼以幫助理解。到目前爲止,它打印紅色,橙色和黃色漸變。我如何完成此操作?Java繪圖面板?

import java.awt.*; 

    public class ColorDrawing2 { 
     public static final int CENTER = 256; 
     public static final int RADIUS = 120; 
     public static final int SHAPES = 32; 
     public static final int SIZE = 40; 
     public static void main(String[] args) { 

      DrawingPanel panel = new DrawingPanel(512,512);   // create a drawing panel 
      panel.setBackground(new Color(0,0,0));   // set background color (orange) 
      Graphics g = panel.getGraphics();    // get graphics toolkit 

      for (int i = 0; i <= SHAPES; i++) { 
             // System.out.println("i = " + i); 
       double angle = (i)*(360/SHAPES)*(Math.PI/180);  // angle 
             // System.out.println("Angle = " + angle); 
       double x = CENTER - (SIZE/2) + RADIUS*Math.cos(angle); // x-cooordinate 
       double y = CENTER - (SIZE/2) + RADIUS*Math.sin(angle); // y-coordinate 

       int red = (int) (199 + 56/SHAPES*i);   // 199 < red < 255 
             // System.out.println("Red = " + red); 
       int grn = (int) (7.97*i);    // 0 < grn < 255 
             // System.out.println("Green = " + grn); 
       int blu = 0; 
       g.setColor(new Color((int) red, grn, blu)); 
       g.fillOval((int)x, (int)y, SIZE, SIZE); 
       panel.sleep(200);     // pause 200 msec 
      } 
     } 
    } 

回答

0

是的,似乎6 for循環應該是足夠的。也許顏色應該高達255?

0

爲6 for循環:

for (int i = 0; i <= SHAPES; i++) { 
           // System.out.println("i = " + i); 
     double angle = ((i)*(60/SHAPES) +65)*(Math.PI/180);  // angle 
           // System.out.println("Angle = " + angle); 
     double x = CENTER - (SIZE/2) + RADIUS*Math.cos(angle); // x-cooordinate 
     double y = CENTER - (SIZE/2) + RADIUS*Math.sin(angle); // y-coordinate 

     int red = (int) (255);   // 199 < red < 255 
           // System.out.println("Red = " + red); 
     int grn = (int) (7.97*i);    // 0 < grn < 255 
           // System.out.println("Green = " + grn); 
     int blu = 0; 
     g.setColor(new Color((int) red, grn, blu)); 
     g.fillOval((int)x, (int)y, SIZE, SIZE); 
     panel.sleep(0);     // pause 200 msec 
    } 
    for (int i = 0; i <= SHAPES; i++) { 
           // System.out.println("i = " + i); 
     double angle = ((i)*(60/SHAPES) + 130)*(Math.PI/180);  // angle 
           // System.out.println("Angle = " + angle); 
     double x = CENTER - (SIZE/2) + RADIUS*Math.cos(angle); // x-cooordinate 
     double y = CENTER - (SIZE/2) + RADIUS*Math.sin(angle); // y-coordinate 

     int red = (int) (255 - (255/SHAPES*i));   // 199 < red < 255 
           // System.out.println("Red = " + red); 
     int grn = (int) (255);    // 0 < grn < 255 
           // System.out.println("Green = " + grn); 
     int blu = 0; 
     g.setColor(new Color((int) red, grn, blu)); 
     g.fillOval((int)x, (int)y, SIZE, SIZE); 
     panel.sleep(0);     // pause 200 msec 
    } 
    for (int i = 0; i <= SHAPES; i++) { 
           // System.out.println("i = " + i); 
     double angle = ((i)*(60/SHAPES) + 185)*(Math.PI/180);  // angle 
           // System.out.println("Angle = " + angle); 
     double x = CENTER - (SIZE/2) + RADIUS*Math.cos(angle); // x-cooordinate 
     double y = CENTER - (SIZE/2) + RADIUS*Math.sin(angle); // y-coordinate 

     int red = (int) (0);   // 199 < red < 255 
           // System.out.println("Red = " + red); 
     int grn = (int) (255);    // 0 < grn < 255 
           // System.out.println("Green = " + grn); 
     int blu = (int) (7.97*i); 
     g.setColor(new Color((int) red, grn, blu)); 
     g.fillOval((int)x, (int)y, SIZE, SIZE); 
     panel.sleep(0);     // pause 200 msec 
    } 
    for (int i = 0; i <= SHAPES; i++) { 
           // System.out.println("i = " + i); 
     double angle = ((i)*(60/SHAPES) + 250)*(Math.PI/180);  // angle 
           // System.out.println("Angle = " + angle); 
     double x = CENTER - (SIZE/2) + RADIUS*Math.cos(angle); // x-cooordinate 
     double y = CENTER - (SIZE/2) + RADIUS*Math.sin(angle); // y-coordinate 

     int red = (int) (0);   // 199 < red < 255 
           // System.out.println("Red = " + red); 
     int grn = (int) (255 - (255/SHAPES*i));    // 0 < grn < 255 
           // System.out.println("Green = " + grn); 
     int blu = (int) (255); 
     g.setColor(new Color((int) red, grn, blu)); 
     g.fillOval((int)x, (int)y, SIZE, SIZE); 
     panel.sleep(0);     // pause 200 msec 
    } 
    for (int i = 0; i <= SHAPES; i++) { 
           // System.out.println("i = " + i); 
     double angle = ((i)*(60/SHAPES) + 315)*(Math.PI/180);  // angle 
           // System.out.println("Angle = " + angle); 
     double x = CENTER - (SIZE/2) + RADIUS*Math.cos(angle); // x-cooordinate 
     double y = CENTER - (SIZE/2) + RADIUS*Math.sin(angle); // y-coordinate 

     int red = (int) (7.97*i);   // 199 < red < 255 
           // System.out.println("Red = " + red); 
     int grn = (int) (0);    // 0 < grn < 255 
           // System.out.println("Green = " + grn); 
     int blu = (int) (255); 
     g.setColor(new Color((int) red, grn, blu)); 
     g.fillOval((int)x, (int)y, SIZE, SIZE); 
     panel.sleep(0);     // pause 200 msec 
    } 
    for (int i = 0; i <= SHAPES; i++) { 
           // System.out.println("i = " + i); 
     double angle = ((i)*(60/SHAPES) +370)*(Math.PI/180);  // angle 
           // System.out.println("Angle = " + angle); 
     double x = CENTER - (SIZE/2) + RADIUS*Math.cos(angle); // x-cooordinate 
     double y = CENTER - (SIZE/2) + RADIUS*Math.sin(angle); // y-coordinate 

     int red = (int) (7.97*i);   // 199 < red < 255 
           // System.out.println("Red = " + red); 
     int grn = (int) (0);    // 0 < grn < 255 
           // System.out.println("Green = " + grn); 
     int blu = (int) (0); 
     g.setColor(new Color((int) red, grn, blu)); 
     g.fillOval((int)x, (int)y, SIZE, SIZE); 
     panel.sleep(0);     // pause 200 msec 
    }