`

基于Swing的图片倒影特效

阅读更多
关键字:Swing,倒影特效,Graphics2D,GradientPaint,translate,scale,rotate

一个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. 给新图片的下半部分设置渐变,此处大家可以修改渐变的值,从而获得不同的渐变效果。例如:设置渐变的部分,范围等。
// 对称图片设置渐变。
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);
	}


四.源码
附件是完整的程序。
2
0
分享到:
评论
3 楼 cheng330301560 2011-11-20  
scale(double sx, double sy);该方法会围绕坐标原点调整图形对象的大小。值可以是负值,表示根据坐标轴对称

最后说负值时我不是很明白,什么个坐标轴对称法
2 楼 javapub 2010-11-30  
sunwenran 写道
不错
如果实体改了 镜像不会改。。so  还需要个repaintmanager

是的。
1 楼 sunwenran 2010-11-30  
不错
如果实体改了 镜像不会改。。so  还需要个repaintmanager

相关推荐

    程序开发特效、倒影效果

    在程序开发中,实现特效和倒影效果是增强用户界面(UI)吸引力和用户体验(UX)的重要手段。倒影效果通常被用于图形设计和网页设计,它可以为视觉元素增添一种深度感和动态感,使整体设计更加生动。下面将详细讨论...

    java源码包---java 源码 大量 实例

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    java源码包2

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    java源码包3

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    java源码包4

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...

Global site tag (gtag.js) - Google Analytics