* 如果渐变是周期性的,那么 P1、P2 延长线上的点在颜色 C1 和 C2 之间来回循环。
* 如果渐变是非周期性的,那么 P1 一边的点有固定的 Color C1,而 P2 一边的点有固定的 Color C2。
基本的概念参照jdk以及http://javapub.iteye.com/blog/781482
效果图以及代码如下:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RadialGradientPaint;
import java.awt.RenderingHints;
import java.awt.geom.Point2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Test extends JPanel{
public static void main(String[] args) {
JFrame myFrame = new JFrame("试试");
Test test = new Test();
myFrame.add(test);
myFrame.setLocationRelativeTo(null);
myFrame.setSize(200, 200);
myFrame.setVisible(true);
myFrame.setDefaultCloseOperation(3);
}
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
RadialGradientPaint p = new RadialGradientPaint(new Point2D.Double(getWidth() / 2.0,getHeight() / 2.0),
getWidth() / 2.4f,
new float[] { 0.0f, 1.0f },
new Color[] { new Color(255,255,255,180),
new Color(0,0,0,255) });
g2.setPaint(p);
g2.fillOval(0, 0, getWidth() - 1, getHeight() - 1);
}
}