Effetti JavaFX - Blend
In generale, miscela significa miscela di due o più cose o sostanze diverse. Se applichiamo l'effetto di fusione, ci vorranno i pixel di due diversi input. Questo verrà fatto nella stessa posizione e produrrà un output combinato basato sublend mode.
Ad esempio, se disegniamo due oggetti, l'oggetto in alto copre quello in basso. Applicando l'effetto fusione, i pixel dei due oggetti nell'area di sovrapposizione vengono combinati e visualizzati in base alla modalità di input.
La classe denominata Blend del pacchetto javafx.scene.effect rappresenta l'effetto di fusione, questa classe contiene quattro proprietà, che sono:
bottomInput - Questa proprietà è del tipo Effect e rappresenta l'ingresso in basso all'effetto di fusione.
topInput - Questa proprietà è del tipo Effect e rappresenta l'input principale per l'effetto di fusione.
opacity - Questa proprietà è di tipo double e rappresenta il valore di opacità modulato con l'ingresso superiore.
mode - Questa proprietà è del tipo BlendMode e rappresenta la modalità utilizzata per fondere i due input insieme.
Esempio
Di seguito è riportato un esempio che dimostra l'effetto di fusione. Qui stiamo disegnando un cerchio pieno di colore MARRONE, sopra di esso si trova un ingresso colore BLU VIOLA.
Abbiamo applicato l'effetto di fusione scegliendo una modalità di moltiplicazione Nell'area di sovrapposizione, i colori dei due oggetti sono stati moltiplicati e visualizzati.
Salva questo codice in un file con il 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);
}
}
Compilare ed eseguire il file java salvato dal prompt dei comandi utilizzando i seguenti comandi.
javac BlendEffectExample.java
java BlendEffectExample
All'esecuzione, il programma di cui sopra genera una finestra JavaFX come mostrato di seguito.
Modalità di fusione
S.NO | Modalità e descrizione | Produzione |
---|---|---|
1 | ADD In questa modalità, i valori di colore degli ingressi superiore e inferiore vengono aggiunti e visualizzati. |
|
2 | MULTIPLY In questa modalità, i valori di colore degli ingressi superiore e inferiore vengono moltiplicati e visualizzati. |
|
3 | DIFFERENCE In questa modalità, tra i valori di colore degli ingressi superiore e inferiore, quello più scuro viene sottratto da quello più chiaro e visualizzato. |
|
4 | RED In questa modalità, i componenti rossi dell'ingresso inferiore sono stati sostituiti dai componenti rossi dell'ingresso superiore. |
|
5 | BLUE In questa modalità, i componenti blu dell'ingresso inferiore sono stati sostituiti dai componenti blu dell'ingresso superiore. |
|
6 | GREEN In questa modalità, i componenti verdi dell'ingresso inferiore sono stati sostituiti dai componenti verdi dell'ingresso superiore. |
|
7 | EXCLUSION In questa modalità, le componenti di colore dei due input sono state moltiplicate e raddoppiate. Quindi vengono sottratti dalla somma delle componenti di colore dell'input inferiore. La risultante viene quindi visualizzata. |
|
8 | COLOR_BURN In questa modalità, l'inverso del componente colore di input inferiore è stato diviso per il componente colore di input superiore. Pertanto, il valore ottenuto viene invertito e visualizzato. |
|
9 | COLOR_DODGE In questa modalità, i componenti del colore di input inferiore sono stati divisi per l'inverso dei componenti del colore di input superiore e quindi il valore ottenuto viene invertito e visualizzato. |
|
10 | LIGHTEN In questa modalità, viene visualizzata la componente di colore più chiara, tra i due ingressi. |
|
11 | DARKEN In questa modalità, viene visualizzata la componente di colore più scuro, tra gli ingressi superiore e inferiore. |
|
12 | SCREEN In questa modalità, le componenti di colore degli ingressi superiore e inferiore sono state invertite, moltiplicate e quindi il valore ottenuto viene invertito e visualizzato. |
|
13 | OVERLAY In questa modalità, in base al colore di input inferiore, i componenti di colore dei due valori di input sono stati moltiplicati o retinati e viene visualizzato il risultato. |
|
14 | HARD_LIGHT In questa modalità, in base al colore di input superiore, i componenti di colore dei due valori di input sono stati moltiplicati o retinati e viene visualizzato il risultato. |
|
15 | SOFT_LIGH In questa modalità, in base al colore di input superiore, le componenti di colore dei due valori di input sono state ammorbidite o schiarite e viene visualizzato il risultato. |
|
16 | SRC_ATOP In questa modalità, l'area di sovrapposizione viene riempita con la componente di colore dell'ingresso inferiore. Mentre l'area non sovrapposta è riempita con il componente di colore dell'input superiore. |
|
17 | SRC_OVER In questa modalità, l'input superiore viene disegnato sull'input inferiore. |