使用BufferedImage进行渐变色操作

本文主要简述一下如何使用BufferedImage进行渐变色操作。

GradientPaint

java/awt/GradientPaint.java

public class GradientPaint implements Paint {
    Point2D.Float p1;
    Point2D.Float p2;
    Color color1;
    Color color2;
    boolean cyclic;
   //......   
}    

这个是生成渐变色的关键类,当然也有其他的渐变类,比如
java/awt/LinearGradientPaint.java

实例

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画一个渐变色的矩形,然后将原图使用一定透明度覆盖上去,这样就看出渐变。
不足之后的话,就是渐变颜色会偏淡。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,066评论 25 709
  • --绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益...
    韩七夏阅读 7,833评论 2 10
  • 昨天一个学生打电话说:“老师,今天我回家,我妈把门锁换了。” “嗯。”我回答。 “为什么呢?她都不给我说一声?我是...
    宁境宁阅读 3,511评论 0 7
  • 坐在这里突然想到,到底是怎样的人,让你的生活变得丰富起来 没办法留给自己暗自神伤 顾影自怜的机会 你想到底是怎样...
    我想养只狗叫卡尔彬阅读 1,468评论 0 0
  • 在这个神秘的地球上有无数的物种在这里遨游,这个空间里有丰富的资源、产物。但是我这一次了解的是宽广深邃的水世界,我曾...
    潘思彤阅读 2,548评论 0 3

友情链接更多精彩内容