实例020 为图形填充渐变色
实例说明
本实例演示在Java中绘制图形时,如何为图形填充渐变色。运行程序,效果如图1.20所示。
关键技术
本实例主要是通过在JPanel类的子类中,重写JComponent类的paint()方法,并在该方法中使用Graphics2D类的setPaint()方法和使用GradientPaint类创建封装渐变颜色的对象来实现的。
(1)使用Graphics2D类的setPaint()方法,并将GradientPaint类创建的封装渐变颜色的对象,作为setPaint()方法的参数,实现为图形填充渐变色的操作,setPaint()方法的定义如下:
public abstract void setPaint(Paint paint)
参数说明
paint:封装了渐变颜色的Paint对象。
(2)使用GradientPaint类创建封装渐变颜色的对象,其构造方法的定义如下:
public GradientPaint(float x1, float y1, Color color1, float x2, float y2, Color color2, boolean cyclic)
参数说明
? x1:用户空间中第1个指定点的x坐标。
v y1:用户空间中第1个指定点的y坐标。
w color1:第1个指定点处的Color对象。
x x2:用户空间中第2个指定点的x坐标。
y y2:用户空间中第2个指定点的y坐标。
z color2:第2个指定点处的Color对象。
{ cyclic:如果渐变模式在两种颜色之间重复循环,则该值设置为true;否则设置为false。
设计过程
(1)新建一个项目。
(2)在项目中创建一个继承JFrame类的FillGradientFrame窗体类。
(3)在FillGradientFrame窗体类中,创建内部面板类FillGradientPanel,并重写JComponent类的paint()方法,在该方法中使用Graphics2D类的setPaint()方法设置封装了渐变色的对象,该对象是通过GradientPaint类创建的。
(4)将内部面板类FillGradientPanel的实例,添加到窗体类FillGradientFrame的内容面板上,用于在窗体上显示填充了渐变颜色的图形,代码如下:
class FillGradientPanel extends JPanel { // 创建内部面板类
public void paint(Graphics g) { // 重写paint()方法
Graphics2D g2 = (Graphics2D) g; // 获得Graphics2D对象
Rectangle2D.Float rect = new Rectangle2D.Float(20, 20, 280, 140); // 创建矩形对象
GradientPaint paint = new GradientPaint(20,20,Color.BLUE,100,80,Color.RED,true); // 创建循环渐变的GradientPaint对象
g2.setPaint(paint); // 设置渐变
g2.fill(rect); // 绘制矩形
}
}
秘笈心法
心法领悟020:多颜色的线性渐变和径向渐变。
在实际应用中,用户还可以使用LinearGradientPaint类实现多颜色的线性渐变,或使用RadialGradientPaint类实现多颜色的径向渐变。