Advertisement
kajacx

Color change

May 24th, 2014
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.59 KB | None | 0 0
  1. package test;
  2.  
  3. import java.awt.*;
  4. import javax.swing.*;
  5.  
  6. public class Draw {
  7.  
  8.     public static void main(String[] args) {
  9.         JFrame frame = new JFrame("Draw test");
  10.         frame.setLayout(new BorderLayout());
  11.  
  12.         frame.add(new MyPanel());
  13.  
  14.         frame.pack();
  15.         frame.setLocationRelativeTo(null);
  16.  
  17.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  18.         frame.setVisible(true);
  19.     }
  20.  
  21.     static class MyPanel extends JPanel {
  22.  
  23.         int count = 24, size = 20;
  24.        
  25.         MyPanel() {
  26.             setPreferredSize(new Dimension(count*size, size));
  27.         }
  28.  
  29.         @Override
  30.         public void paintComponent(Graphics g) {
  31.             super.paintComponent(g);
  32.  
  33.             int startColor = 0x008000;
  34.             int endColor = 0x0000FF;
  35.  
  36.             int startRed = (startColor >> 16) & 0xFF;
  37.             int startGreen = (startColor >> 8) & 0xFF;
  38.             int startBlue = startColor & 0xFF;
  39.  
  40.             int endRed = (endColor >> 16) & 0xFF;
  41.             int endGreen = (endColor >> 8) & 0xFF;
  42.             int endBlue = endColor & 0xFF;
  43.  
  44.             int steps = count;
  45.  
  46.             for (int i = 0; i < steps; i++) {
  47.                 int newRed = ((steps - 1 - i) * startRed + i * endRed) / (steps - 1);
  48.                 int newGreen = ((steps - 1 - i) * startGreen + i * endGreen) / (steps - 1);
  49.                 int newBlue = ((steps - 1 - i) * startBlue + i * endBlue) / (steps - 1);
  50.                 int result = newRed << 16 | newGreen << 8 | newBlue;
  51.                 g.setColor(new Color(result));
  52.                 g.fillRect(i*size, 0, size, size);
  53.             }
  54.         }
  55.     }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement