Paint a linear gradient
28/01/2009
/*
*
*/
public void paint(Graphics g, Color c1, Color c2) {
Graphics2D g2 = (Graphics2D)g;
Paint oldPainter = g2.getPaint();
g2.setPaint(new GradientPaint(new Point2D.Double(0, 0), c1, new Point2D.Double(getWidth(), 0), c2));
g2.fillRect(0, 0, getWidth(), getHeight());
g2.setPaint(oldPainter);
}
/*
* Without gradiant paint
*/
public void paint(Graphics g, Color c1, Color c2) {
// Add gradient (This might be done before !!)
Graphics2D g2 = (Graphics2D)g;
for (int i = -1; i <= this.getWidth(); ++i) {
float ratio = (float)i / (float)this.getWidth();
int red = (int)(c2.getRed() * ratio + c1.getRed() * (1 - ratio));
int green = (int)(c2.getGreen() * ratio + c1.getGreen() * (1 - ratio));
int blue = (int)(c2.getBlue() * ratio + c1.getBlue() * (1 - ratio));
Color c = new Color(red, green, blue);
Rectangle2D r = new Rectangle2D.Float(1 + i, 0, this.getWidth(), this.getHeight());
g2.setPaint(c);
g2.fill(r);
}
// Paint using super methods
super.paint(g);
}