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);
	    }

  

 
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM