本文主要简述一下如何使用BufferedImage进行渐变色操做。java
java/awt/GradientPaint.javacode
public class GradientPaint implements Paint { Point2D.Float p1; Point2D.Float p2; Color color1; Color color2; boolean cyclic; //...... }
这个是生成渐变色的关键类,固然也有其余的渐变类,好比
java/awt/LinearGradientPaint.javaci
public static BufferedImage drawGradient(BufferedImage srcImg, int startX, int startY, int endX, int endY, Color colorFrom, Color colorTo, float opacity) { BufferedImage dstImg = new BufferedImage(srcImg.getWidth(), srcImg.getHeight(), BufferedImage.TYPE_INT_RGB); GradientPaint grad = new GradientPaint(startX, startY, colorFrom, endX, endY, colorTo); //从左上到右下渐变; Graphics2D g2 = (Graphics2D) dstImg.getGraphics(); g2.setPaint(grad); g2.fillRect(startX, startY, endX, endY); g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, opacity)); g2.drawImage(srcImg, 0, 0, srcImg.getWidth(), srcImg.getHeight(), null); g2.dispose(); return dstImg; }
原理就是先使用GradientPaint画一个渐变色的矩形,而后将原图使用必定透明度覆盖上去,这样就看出渐变。
不足以后的话,就是渐变颜色会偏淡。get