2016-01-07 114 views
0

我試圖做這樣的事情:用 Alpha Gradient Mask的JavaFX如何製作Alpha漸變蒙版?

如何做到這一點任何想法?

+0

歡迎來到Stack Overflow。你會很快注意到這種類型的問題不會產生很好的答案。你應該嘗試先做你自己。然後當你陷入困境時,你可以回來更具體的問題。 –

+0

感謝您的回答。我不是在尋找一個完整的解決方案,而是應該使用哪些功能來實現這一點。 – Antoine

+0

類似於:[在javafx中創建圖像疊加蒙版](http://stackoverflow.com/questions/28170383/create-an-image-overlay-mask-in-javafx) – jewelsea

回答

0

我找到了一種方法來處理「AlphaComposite」函數。

這裏是我的代碼:

private Image mask; 
private Image dest; 
private float alpha = 1f; 

private void loadImages() { 

    mask = new ImageIcon("resources/source.png").getImage(); 
    dest = new ImageIcon("resources/destination.png").getImage(); 
} 

private void doDrawing(Graphics g) { 

    Graphics2D g2d = (Graphics2D) g.create(); 

    BufferedImage buffImg = new BufferedImage(500, 400, 
      BufferedImage.TYPE_INT_ARGB); 
    Graphics2D gbi = buffImg.createGraphics(); 

    AlphaComposite ac = AlphaComposite.getInstance(
      AlphaComposite.SRC_IN, alpha); 

    gbi.drawImage(mask, 0, 0, null); 
    gbi.setComposite(ac); 
    gbi.drawImage(dest, 0, 0, null); 

    g2d.drawImage(buffImg, 20, 20, null); 

    gbi.dispose(); 
    g2d.dispose(); 
} 

這裏是我得到:

Original image & Mask

Result

我願做同樣的事情在JavaFX因爲我使用Javafx圖像(或來自OPENCV Library的Mat圖像)。