首先熟悉兩個類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);
}
