package test;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
@SuppressWarnings("serial")
public class RainbowTest extends JFrame{
public static void main(String[] argv){
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run(){
new RainbowTest();
}
});
}
public RainbowTest(){
JPanel canvas = new JPanel(){
@Override
public void paintComponent(Graphics g){
paintCanvas((Graphics2D) g);
}
};
canvas.setPreferredSize(new Dimension(240, 240));
add(canvas);
pack();
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
private void paintCanvas(Graphics2D g){
g.setColor(Color.CYAN);
g.fillRect(0, 0, 240, 240);
g.setColor(Color.GREEN);
g.fillRect(0, 100, 240, 140);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.75f));
int[] colors = new int[3];
for(int i = 0; i < 160; i++){
for(int c = 0; c < 3; c++){
int line = (c - 1) * -64 + i;
colors[c] = line % 192;
if(64 < line && line < 192) colors[c] = 128 - line;
if(colors[c] < 0) colors[c] = 0;
if(colors[c] > 32) colors[c] = 32;
colors[c] *= 8;
if(colors[c] == 256) --colors[c];
}
g.setColor(new Color(colors[0], colors[1], colors[2]));
g.drawLine(i, 0, i ,160);
}
}
}
最終更新:2009年08月07日 15:57