Wednesday 28 October 2020

JavaFX: BoxBlur: Create Box Blur effect

BoxBlur class is used to create box blur effect using a simple box filter kernel, with separately configurable sizes in both dimensions, and an iteration parameter that controls the quality of the resulting blur.

 

BoxBlur class provides following constructors to define BoxBlur instance.

 

public BoxBlur()

public BoxBlur(double width, double height, int iterations)

width: the horizontal dimension of the blur effect. Width specifies horizontal blurness.

height: the vertical dimension of the blur effect. ‘height’ specifies vertical blurness.

iterations: the number of times to iterate the blur effect to improve its "quality" or "smoothness"

 

FXMl to blur a Text control

    <Text fx:id = "text1" text="Learning JavaFX"  fill="white"

        style="-fx-font-weight: bold; -fx-font-size: 50; -fx-font-family: Verdana; -fx-font-style: italic"

        stroke="black" strokeWidth="2"

        x="50" y = "50" effect="$shadow1">

       

        <BoxBlur fx:id = "shadow1"

            width="10"

            height="5"

            iterations="2"/>

    </Text>

 

Find the below working application.

 

boxBlurDemo.fxml

<?import javafx.scene.*?>
<?import javafx.scene.shape.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>
<?import javafx.scene.effect.*?>

<Group xmlns:fx="http://javafx.com/fxml" fx:controller="com.sample.app.effects.controller.InnerShadowEffectController">

	<Text fx:id = "text1" text="Learning JavaFX"  fill="white"
		style="-fx-font-weight: bold; -fx-font-size: 50; -fx-font-family: Verdana; -fx-font-style: italic"
		stroke="black" strokeWidth="2" 
		x="50" y = "50" effect="$shadow1">
		
		<BoxBlur fx:id = "shadow1" 
			width="10" 
			height="5"
			iterations="2"/>
	</Text>
	
	
	<Text fx:id = "text2" text="Learning JavaFX"  fill="white"
		style="-fx-font-weight: bold; -fx-font-size: 50; -fx-font-family: Verdana; -fx-font-style: italic"
		stroke="black" strokeWidth="2" 
		x="50" y = "150" effect="$shadow1">
		
		<BoxBlur fx:id = "shadow1" 
			width="5" 
			height="10"
			iterations="2"/>
	</Text>
	
	
	<Text fx:id = "text3" text="Learning JavaFX"  fill="white"
		style="-fx-font-weight: bold; -fx-font-size: 50; -fx-font-family: Verdana; -fx-font-style: italic"
		stroke="black" strokeWidth="2" 
		x="50" y = "250" effect="$shadow1">
		
		<BoxBlur fx:id = "shadow1" 
			width="10" 
			height="5"
			iterations="1"/>
	</Text>
	
	
	<Text fx:id = "text4" text="Learning JavaFX"  fill="white"
		style="-fx-font-weight: bold; -fx-font-size: 50; -fx-font-family: Verdana; -fx-font-style: italic"
		stroke="black" strokeWidth="2" 
		x="50" y = "350" effect="$shadow1">
		
		<BoxBlur fx:id = "shadow1" 
			width="5" 
			height="10"
			iterations="1"/>
	</Text>
	
</Group>

 

BoxBlurController.java

package com.sample.app.effects.controller;

import java.net.URL;
import java.util.ResourceBundle;

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.text.Text;

public class BoxBlurController  implements Initializable {

	@FXML
	private Text text1;
	
	@FXML
	private Text text2;
	
	@FXML
	private Text text3;
	
	@FXML
	private Text text4;

	@Override
	public void initialize(URL location, ResourceBundle resources) {

	}

}

 

BoxBlurDemo.java

package com.sample.app.effects;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class BoxBlurDemo extends Application {

    private static final String FXML_FILE = "/boxBlurDemo.fxml";
    private static final String STAGE_TITLE = "Drop Shadow Effect";

    public static void main(String args[]) {
        launch(args);

    }

    @Override
    public void start(Stage primaryStage) throws Exception {

        Parent root = (Parent) FXMLLoader.load(this.getClass().getResource(FXML_FILE));

        Scene scene = new Scene(root, 600, 400, Color.WHITE);

        primaryStage.setTitle(STAGE_TITLE);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

}

 

Output

 


 

 

  

Previous                                                    Next                                                    Home

No comments:

Post a Comment