java简单设置图层实现图片叠加

首先熟悉两个类Graphics2D,AlphaComposite. 简记为G,A
Graphics2D:Graphics的子类→G可以调用Graphics的一切方法。通过Graphics对象也可以用下面的代码直接获取G的对象:

Graphics2D g2d=(Graphics2D) g;

它作为子类,不仅可以调用父类Graphics的一切方法,而且还延伸了很多自己的方法。我们这次要用的就是setComposite(AlphaComposite ac)方法,里面有一个A对象的参数,先paint底图(位处0层的图像),然后你设置好这个方法以后,再用G的对象比如上面的g2d来paintImage(n层图片)的话就自动采用叠加原则,这样你把第n层的图片白底黑底弄成透明,就可以实现图层的效果。

那么,现在的问题是,AlphaComposite对象怎么来?查看API文档可知,A对象有一个专用的构造方法

AlphaComposite ac=AlphaComposite.getInstance(AlphaComposite.SRC_OVER);

 后面AlphaComposite.SRC_OVER是什么意思?就是在目标色之上合成源色(Porter-Duff Source Over Destination 规则),也正好对应了我们要用的理论基础。

好了,话不多说,上一个代码(一部分)。自己研究一下,看懂不难吧?bg,gc是Image对象,也就是图层的第一层和第二层

   public void paint(Graphics g) {	    	
	    	Graphics2D g2d=(Graphics2D) g;
	    	g2d.drawImage(bg,0,0,chicun,chicun,null); 
	    	if(gc==null)return;
	    	AlphaComposite ac=AlphaComposite.getInstance(AlphaComposite.SRC_OVER);
	    	g2d.setComposite(ac);
	    	g2d.drawImage(gc,0,0,chicun,chicun,null);        
	        super.paint(g);
	    }

  


 
posted @ 2014-11-03 23:22  wkh66  阅读(6761)  评论(0编辑  收藏  举报