import javax.swing.*; import java.awt.*; import java.awt.event.*; /** * Component for ColorShadeDriver. * This class extends JPanel and overrides paint * @author Bob Futrelle * @version 0.1 1/20/04 (from "SwingApplication orig of 7/6/02) */ public class Shader extends JPanel { public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; Color red = Color.red; Color green = Color.green; int rstart = 10; int cstart = 10; int rows = 100; int cols = 350; // iterate over rows for(int r = rstart; r < rstart + rows; r++) //iterate over columns for(int c = cstart; c < cstart + cols; c++){ g2.setColor(mixColors(red, green, 0.5*((r-rstart)/(double)rows + (c-cstart)/(double)cols))); g2.drawLine(c,r,c+1,r); } } /** Fraction should be between 0.0 and 1.0 */ public Color mixColors(Color c1, Color c2, double fraction1) { double f1 = fraction1; double f2 = 1.0 - fraction1; double r1 = c1.getRed()/255.0; double g1 = c1.getGreen()/255.0; double b1 = c1.getBlue()/255.0; double r2 = c2.getRed()/255.0; double g2 = c2.getGreen()/255.0; double b2 = c2.getBlue()/255.0; return new Color((float)(f1*r1 + f2*r2), (float)(f1*g1 + f2*g2), (float)(f1*b1 + f2*b2)); } } // class Shader