2016-01-07 76 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图像)。