GradientPaint类的作用

GradientPaint是Java2D中专门用来控制渐变的类,它提供了使用线性颜色渐变模式填充 Shape 的方法。其构造函数GradientPaint(float x1, float y1, Color color1, float x2, float y2, Color color2),充分说明了它的作用,即从点(x1,y1)到点(x2,y2)进行渐变。如果在用户空间指定了 Point P1 的 Color 为 C1,Point P2 的 Color 为 C2,则 P1、P2 连接线上的 Color 是逐渐地从 C1 变化到 C2 的。任何不在 P1、P2 延长线上的点 P 都具有点 P' 的颜色,P' 是 P1、P2 延长线上点 P 的垂直投影。P1、P2 段以外的延长线上的点可以按以下两种方式之一进行着色。

* 如果渐变是周期性的,那么 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);
         
    }
}



  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值