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

  


 

转载于:https://www.cnblogs.com/wkh66/p/4072493.html

发布了0 篇原创文章 · 获赞 5 · 访问量 5万+
展开阅读全文
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览