Efectos JavaFX - Mezcla

En general, mezcla significa mezcla de dos o más cosas o sustancias diferentes. Si aplicamos el efecto de fusión, tomará los píxeles de dos entradas diferentes. Esto se hará en la misma ubicación y producirá una salida combinada basada en lablend mode.

Por ejemplo, si dibujamos dos objetos, el objeto superior cubre el inferior. Al aplicar el efecto de fusión, los píxeles de los dos objetos en el área de superposición se combinan y se muestran según el modo de entrada.

La clase nombrada Blend del paquete javafx.scene.effect representa el efecto de mezcla, esta clase contiene cuatro propiedades, que son:

  • bottomInput - Esta propiedad es del tipo Efecto y representa la entrada inferior al efecto de mezcla.

  • topInput - Esta propiedad es del tipo Efecto y representa la entrada superior al efecto de mezcla.

  • opacity - Esta propiedad es de tipo doble y representa el valor de opacidad modulado con la entrada superior.

  • mode - Esta propiedad es del tipo BlendMode y representa el modo utilizado para combinar las dos entradas.

Ejemplo

A continuación se muestra un ejemplo que demuestra el efecto de mezcla. Aquí, estamos dibujando un círculo relleno de color MARRÓN, encima hay un ColorInput BLUEVIOLET.

Hemos aplicado el efecto de fusión eligiendo un modo de multiplicación. En el área de superposición, los colores de los dos objetos se multiplicaron y se mostraron.

Guarde este código en un archivo con el nombre 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 y ejecute el archivo java guardado desde el símbolo del sistema utilizando los siguientes comandos.

javac BlendEffectExample.java 
java BlendEffectExample

Al ejecutarse, el programa anterior genera una ventana JavaFX como se muestra a continuación.

Modos de fusión

S.NO Modo y descripción Salida
1

ADD

En este modo, los valores de color de las entradas superior e inferior se agregan y se muestran.

2

MULTIPLY

En este modo, los valores de color de las entradas superior e inferior se multiplican y se muestran.

3

DIFFERENCE

En este modo, entre los valores de color de las entradas superior e inferior, el más oscuro se resta del más claro y se muestra.

4

RED

En este modo, los componentes rojos de la entrada inferior fueron reemplazados por los componentes rojos de la entrada superior.

5

BLUE

En este modo, los componentes azules de la entrada inferior fueron reemplazados por los componentes azules de la entrada superior.

6

GREEN

En este modo, los componentes verdes de la entrada inferior fueron reemplazados por los componentes verdes de la entrada superior.

7

EXCLUSION

En este modo, los componentes de color de las dos entradas se multiplicaron y duplicaron. Luego, se restan de la suma de los componentes de color de la entrada inferior. A continuación, se muestra el resultado.

8

COLOR_BURN

En este modo, la inversa del componente de color de entrada inferior se dividió por el componente de color de entrada superior. Por lo tanto, el valor obtenido se invierte y se muestra.

9

COLOR_DODGE

En este modo, los componentes de color de entrada inferiores se dividieron por el inverso de los componentes de color de entrada superiores y, por lo tanto, el valor obtenido se invierte y se muestra.

10

LIGHTEN

En este modo, se muestra el componente de color más claro, entre las dos entradas.

11

DARKEN

En este modo, se muestra el componente de color más oscuro, entre las entradas superior e inferior.

12

SCREEN

En este modo, los componentes de color de las entradas superior e inferior se invirtieron, multiplicaron y, por lo tanto, el valor obtenido se invierte y se muestra.

13

OVERLAY

En este modo, basándose en el color de entrada inferior, los componentes de color de los dos valores de entrada se multiplicaron o se trazaron y se muestra el resultado.

14

HARD_LIGHT

En este modo, basado en el color de entrada superior, los componentes de color de los dos valores de entrada se multiplicaron o se trazaron y se muestra el resultado.

15

SOFT_LIGH

En este modo, en función del color de entrada superior, los componentes de color de los dos valores de entrada se suavizaron o aclararon y se muestra el resultado.

dieciséis

SRC_ATOP

En este modo, el área superpuesta se rellena con el componente de color de la entrada inferior. Mientras que el área que no se superpone se rellena con el componente de color de la entrada superior.

17

SRC_OVER

En este modo, la entrada superior se dibuja sobre la entrada inferior.