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. |