Java图形与文本(20)

实例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类实现多颜色的径向渐变。

 

读书导航