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