Efeitos JavaFX - Mistura

Em geral, mistura significa mistura de duas ou mais coisas ou substâncias diferentes. Se aplicarmos o efeito de mistura, ele ocupará os pixels de duas entradas diferentes. Isso será feito no mesmo local e produzirá uma saída combinada com base noblend mode.

Por exemplo, se desenharmos dois objetos, o objeto de cima cobre o de baixo. Ao aplicar o efeito de mesclagem, os pixels dos dois objetos na área de sobreposição são combinados e exibidos com base no modo de entrada.

A classe chamada Blend do pacote javafx.scene.effect representa o efeito de mistura, esta classe contém quatro propriedades, que são -

  • bottomInput - Esta propriedade é do tipo Efeito e representa a entrada inferior do efeito de mesclagem.

  • topInput - Esta propriedade é do tipo Efeito e representa a entrada superior para o efeito de mesclagem.

  • opacity - Esta propriedade é do tipo duplo e representa o valor de opacidade modulado com a entrada superior.

  • mode - Esta propriedade é do tipo BlendMode e representa o modo usado para combinar as duas entradas.

Exemplo

A seguir está um exemplo que demonstra o efeito de mesclagem. Aqui, estamos desenhando um círculo preenchido com a cor MARROM, em cima dele está um BLUEVIOLET ColorInput.

Aplicamos o efeito de mistura escolhendo um modo de multiplicação. Na área de sobreposição, as cores dos dois objetos foram multiplicadas e exibidas.

Salve este código em um arquivo com o nome BlendEffectExample.java.

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.stage.Stage;
import javafx.scene.shape.Circle; 
import javafx.scene.effect.Blend; 
import javafx.scene.effect.BlendMode; 
import javafx.scene.effect.ColorInput; 
import javafx.scene.paint.Color; 
         
public class BlendEffectExample extends Application { 
   @Override 
   public void start(Stage stage) { 
      //Drawing a Circle 
      Circle circle = new Circle();       
      
      //Setting the center of the Circle
      circle.setCenterX(75.0f); 
      circle.setCenterY(75.0f); 
      
      //Setting radius of the circle 
      circle.setRadius(30.0f); 
      
      //Setting the fill color of the circle 
      circle.setFill(Color.BROWN); 
       
      //Instantiating the blend class 
      Blend blend = new Blend(); 
      
      //Preparing the to input object 
      ColorInput topInput = new ColorInput(35, 30, 75, 40, Color.BLUEVIOLET); 
      
      //setting the top input to the blend object 
      blend.setTopInput(topInput); 
      
      //setting the blend mode 
      blend.setMode(BlendMode.SRC_OVER); 
       
      //Applying the blend effect to circle  
      circle.setEffect(blend);       
         
      //Creating a Group object  
      Group root = new Group(circle); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 150, 150);  
      
      //Setting title to the Stage 
      stage.setTitle("Blend Example"); 
         
      //Adding scene to the stage 
      stage.setScene(scene); 
         
      //Displaying the contents of the stage 
      stage.show(); 
   }      
   public static void main(String args[]){ 
      launch(args); 
   } 
}

Compile e execute o arquivo java salvo no prompt de comando usando os comandos a seguir.

javac BlendEffectExample.java 
java BlendEffectExample

Ao ser executado, o programa acima gera uma janela JavaFX conforme mostrado abaixo.

Modos de mistura

S.NO Modo e descrição Resultado
1

ADD

Neste modo, os valores de cor das entradas superior e inferior são adicionados e exibidos.

2

MULTIPLY

Neste modo, os valores de cor das entradas superior e inferior são multiplicados e exibidos.

3

DIFFERENCE

Neste modo, entre os valores de cor das entradas superior e inferior, o mais escuro é subtraído do mais claro e exibido.

4

RED

Neste modo, os componentes vermelhos da entrada inferior foram substituídos pelos componentes vermelhos da entrada superior.

5

BLUE

Neste modo, os componentes azuis da entrada inferior foram substituídos pelos componentes azuis da entrada superior.

6

GREEN

Neste modo, os componentes verdes da entrada inferior foram substituídos pelos componentes verdes da entrada superior.

7

EXCLUSION

Neste modo, os componentes de cor das duas entradas foram multiplicados e duplicados. Em seguida, eles são subtraídos da soma dos componentes de cor da entrada inferior. A resultante é então exibida.

8

COLOR_BURN

Nesse modo, o inverso do componente da cor de entrada inferior era dividido pelo componente da cor de entrada superior. Assim, o valor obtido é invertido e exibido.

9

COLOR_DODGE

Neste modo, os componentes da cor de entrada inferior foram divididos pelo inverso dos componentes da cor de entrada superior e, portanto, o valor obtido é invertido e exibido.

10

LIGHTEN

Neste modo, o componente de cor mais clara, entre as duas entradas, é exibido.

11

DARKEN

Neste modo, o componente de cor mais escura, entre as entradas superior e inferior, é exibido.

12

SCREEN

Neste modo, os componentes de cor das entradas superior e inferior foram invertidos, multiplicados e, portanto, o valor obtido é invertido e exibido.

13

OVERLAY

Neste modo, com base na cor de entrada inferior, os componentes de cor dos dois valores de entrada foram multiplicados ou filtrados e o resultante é exibido.

14

HARD_LIGHT

Neste modo, com base na cor de entrada superior, os componentes de cor dos dois valores de entrada foram multiplicados ou filtrados e a resultante é exibida.

15

SOFT_LIGH

Neste modo, com base na cor de entrada superior, os componentes de cor dos dois valores de entrada foram suavizados ou clareados e a resultante é exibida.

16

SRC_ATOP

Neste modo, a área sobreposta é preenchida com o componente de cor da entrada inferior. Enquanto a área não sobreposta é preenchida com o componente de cor da entrada superior.

17

SRC_OVER

Neste modo, a entrada superior é desenhada sobre a entrada inferior.