Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 347|回复: 0

[图像处理学习]Swing做的图片倒影

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-28 23:55:39 | 显示全部楼层 |阅读模式
    一个Swing的倒影特效,如图


    为了可以更好的了解程序,首先介绍一下Graphics2D的几个重要方法,然后是负责控制渐变的类GradientPaint。 一.Graphics2D的三个重要方法
    translate(int x, int y);使图形对象进行一个(dx, dy)的平移。
    scale(double sx, double sy);该方法会围绕坐标原点调整图形对象的大小。值可以是负值,表示根据坐标轴对称。
    rotate(double theta); 该方法会围绕坐标原点旋转图形对象。 二.GradientPaint类的作用
    GradientPaint是java2D中专门用来控制渐变的类,它提供了使用线性颜色渐变模式填充 Shape 的方法。其构造函数GradientPaint(float x1, float y1, Color color1, float x2, float y2, Color color2),充分说明了它的作用,即从点(x1,y1)到点(x2,y2)进行渐变。更详细一些的资料见文章:http://javapub.iteye.com/blog/781482 三.镜面特效的思路
    1. 先开辟一块内存空间,用于存放新的图片,新图片的尺寸,宽等于原图片,高是原图片的两倍。

    BufferedImage result = new BufferedImage(image.getWidth(), height * 2, BufferedImage.TYPE_INT_ARGB);
      2. 在新图片的上半部分画原始图片
    // 画原始图片。
    g2.drawImage(image, 0, 0, null);
    // 画对称线。  3. 在新图片的中间画一条黑线,黑线的宽度为两个像素
    g2.setColor(Color.black);
    g2.setStroke(new BasicStroke(2));
    g2.drawLine(0, 346, 600, 346);  4. 在新图片的下半部分画对称图片
    g2.scale(1.0, -1.0);
    g2.drawImage(image, 0, -2 * height, null);
    g2.scale(1.0, -1.0);  5. 给新图片的下半部分设置渐变,此处大家可以修改渐变的值,从而获得不同的渐变效果。例如:设置渐变的部分,范围等。
    Java代码 收藏代码  // 对称图片设置渐变。
    g2.translate(0, height);
    GradientPaint mask;
    mask = new GradientPaint(0, 0, new Color(1.0f, 1.0f, 1.0f, 1.0f), 0,
    height, new Color(1.0f, 1.0f, 1.0f, 0.0f));
    g2.setPaint(mask);
    g2.setComposite(AlphaComposite.DstIn);
    g2.fillRect(0, 0, image.getWidth(), height);  6.调用组件的paintComponent方法,绘制图片
    protected void paintComponent(Graphics g) {
       Graphics2D g2 = (Graphics2D) g;
        g2.translate(20, 20);
       g2.drawImage(image, 0, 0, null);
       g2.translate(-20, -20);
    }  四.源码
    附件是完整的程序。  
       
         
         
          
          

            
          

            
          
         
       

      


    源码下载:http://file.javaxxz.com/2014/10/28/235538984.rar
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-26 04:15 , Processed in 0.296990 second(s), 36 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表