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