这是我在网上找到的一个颜色由深入浅渐变效果的方法,我想改成有浅入深的效果,自己没改明白,请高手帮忙改一下!小弟在此先谢谢了!/**
 * 绘制渐变色选择条
 * 
 * @param g
 * @param color
 * @param x
 * @param y
 * @param width
 * @param height
 */ 
public final static void drawRGBRect(Graphics g, int color, int x, int y,
int width, int height) {
int[] rgb = getRGBColor(color, width);
for (int by = y; by < y + height; by += 4) { int nTemp = y + height - (by - y); nTemp = nTemp > 4 ? 4 : nTemp;
g.drawRGB(rgb, 0, width, x, by, width, nTemp, true);
} } /**
 * 获取颜色渐变RGB数组,
 * 
 * @param width
 * @return
 */
public final static int[] getRGBColor(int color, int h) {
int[] rgb; int RGB_L = h;
int nRgbData = RGB_L * 4; rgb = new int[nRgbData]; int alpha = -127;
for (int i = 0; i < RGB_L; i++) {
alpha = -127 + i; int col = color | (128 - alpha << 24);
rgb[i] = col;
rgb[i + RGB_L] = col;
rgb[i + RGB_L * 2] = col;
rgb[i + RGB_L * 3] = col; } return rgb;

解决方案 »

  1.   

    这个其实不是由深入浅,而是透明度的变化
    alpha = 127 - i;
      

  2.   


    import java.awt.*;
    import javax.swing.*;
    import java.awt.geom.*;public class DrawRGBRect extends JPanel{
        public void paintComponent(Graphics g){
            Graphics2D g2=(Graphics2D)g;
            int x=50,y=50,lastx=200,lasty=100;
            GradientPaint r2b = new GradientPaint(x, y, Color.red, lastx,lasty,Color.blue);
            g2.setPaint(r2b);
            int width=150,height=50,arcw=10,arch=10;
            g2.fill(new RoundRectangle2D.Double(x,y,width,height,arcw, arch));
        }    public static void main(String args[]){
            JFrame jf=new JFrame("画渐变填充矩形");
            jf.getContentPane().add(new DrawRGBRect());
            jf.setSize(300,200);
            jf.setVisible(true);
            jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    }