2016-01-07 5 views
0

я пытаюсь сделать что-то вроде этого: Alpha Gradient Mask с помощью JavaFXКак сделать альфа-градиентную маску?

Любые идеи о том, как это сделать?

+0

Добро пожаловать в Переполнение стека. Вы заметите довольно быстро, что этот тип вопросов не даст очень хороших ответов. Сначала вы должны попытаться сделать это самостоятельно. И тогда, когда вы застрянете, вы можете вернуться с более конкретными вопросами. –

+0

Спасибо за ваш ответ. Я не ищу полного решения, juste несколько идей, как какие функции я должен использовать для достижения этого. – 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 (или изображениями Mat из библиотеки OPENCV).

Смежные вопросы