Java: Hiệu ứng trộn (Blend)
Nói chung, trộn (blend) có nghĩa là hỗn hợp của hai hoặc nhiều thứ hoặc chất khác nhau. Nếu chúng ta áp dụng hiệu ứng trộn, nó sẽ lấy các pixel của hai đầu vào khác nhau. Điều này sẽ được thực hiện tại cùng một vị trí và nó tạo ra kết quả đầu ra kết hợp dựa trên chế độ trộn.
Ví dụ, nếu chúng ta vẽ hai đối tượng, đối tượng trên cùng che đối tượng dưới cùng. Khi áp dụng hiệu ứng trộn, các pixel của hai đối tượng trong vùng chồng chéo được kết hợp và hiển thị dựa trên chế độ đầu vào.
Lớp có tên Blend của gói javafx.scene.effect đại diện cho hiệu ứng trộn, lớp này chứa bốn thuộc tính, đó là:
- bottomInput - Thuộc tính này thuộc loại Effect và nó đại diện cho đầu vào dưới cùng của hiệu ứng trộn.
- topInput - Thuộc tính này thuộc loại Effect và nó đại diện cho đầu vào hàng đầu cho hiệu ứng pha trộn.
- opacity - Thuộc tính này thuộc loại double và nó đại diện cho giá trị độ mờ được điều chỉnh với đầu vào trên cùng.
- mode - Thuộc tính này thuộc loại BlendMode và nó đại diện cho chế độ được sử dụng để trộn hai đầu vào với nhau.
Thí dụ
Sau đây là một ví dụ minh họa hiệu ứng pha trộn. Ở đây, chúng tôi đang vẽ một vòng tròn với màu NÂU, trên đầu của nó là Đầu vào màu BLUEVIOLET.
Chúng tôi đã áp dụng hiệu ứng hòa trộn chọn một chế độ nhân Trong vùng chồng chéo, màu sắc của hai đối tượng được nhân lên và hiển thị.
Lưu mã này trong một tệp với tên 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); } }
Biên dịch và thực thi tệp java đã lưu từ dấu nhắc lệnh bằng các lệnh sau.
javac BlendEffectExample.java java BlendEffectExample
Khi thực thi, chương trình trên tạo ra một cửa sổ JavaFX như hình dưới đây.