2024年6月1日发(作者:)

java线性渐变

实现线性渐变可以使用包下的LinearGradientPaint类,该类的构造方

法主要有如下几种重载形式。

 LinearGradientPaint(float startX , float startY , float endX , float endY , float[] fractions ,

Color[] colors) 其中,startX和startY表示颜色渐变轴起始点的x与y坐标;endX和

endY则表示颜色渐变轴终点的x与y坐标;fractions是一组范围从0.0f到1.0f的之间

的数字,用于指定渐变的颜色分布;colors则是一组颜色,每个颜色都分别与fractions

数组中的范围相应。

 LinearGradientPaint(float startX , float startY , float endX , float endY , float[] fractions ,

Color[] colors,ethod cycleMethod) 同上。cycleMethod参

数用于设置颜色的循环模式,可选值及其含义如表11-1所示。

表11-1 ethod类中的常量

常量名

NO_CYCLE

REFLECT

REPEAT

含义

如果颜色渐变范围没有覆盖整个被填充的图形,那么将使用渐变轴终点处

的颜色填充剩余区域。此常量为默认值。

如果颜色渐变范围没有覆盖整个被填充的图形,那么将按照从头到尾,从

尾到头的顺序循环渐变颜色,填充剩余区域

如果颜色渐变范围没有覆盖整个被填充的图形,那么将按照从头到尾的顺

序循环渐变颜色,填充剩余区域

下面通过一个实现

JPanel渐变的实例,说明线性渐变的使用。代码如下所示。

import .*;

import .*;

import .*;

public class GradientPanel extends JPanel

{

public GradientPanel(LayoutManager lm)

{

super(lm); //继承父类

}

public void paintComponent(Graphics g)

{

omponent(g); //继承父类

if (!isOpaque())

{

return;

}

Color control = or("control"); //设置颜色

int width = getWidth(); //设置宽度

int height = getHeight(); //设置宽度

Graphics2D g2 = (Graphics2D) g; //将g强制转换为Graphics2D类型

Paint storedPaint = nt();

//设置渐变颜色

nt(new GradientPaint(0, 0, , width, height,control));

ct(0, 0, width, height); //填充渐变

nt(storedPaint);

}

public static void main(String args[])

{

//实例化JFrame对象并设置标题

JFrame jf=new JFrame("线性渐变");

//设置窗体中关闭按钮的状态

aultCloseOperation(E_ON_CLOSE);

//新建组件并设置面板布局

GradientPanel gp=new GradientPanel(new BorderLayout());

("Center",new JLabel("线性渐变")); //向面板中添加标签

tentPane().add(gp); //向面板中添加布局

e(300,200); //设置窗口大小

ible(true); //设置窗口显示

}

}

在上述代码中,主要实现的功能是对窗体主界面进行颜色渐变。在代码中通过

重定paintComponent()方法实现该功能。在paintComponent()方法中继承了该对象的

父类,先用or()设置颜色,然后用Graphics2D类的setPaint()方法

设置颜色,fillRect()方法填充颜色。执行上述代码,结果如图11-6所示。

图11-6 线性渐变