Wednesday, 28 October 2020

JavaFx: InnerShadow effect

 InnerShadow is a high-level effect that renders a shadow inside the edges of the given content with the specified color, radius, and offset.

 

InnerShadow class provides following constructors, to get an InnerShadow instance.

 

public InnerShadow()

public InnerShadow(double radius, Color color)

public InnerShadow(double radius, double offsetX, double offsetY, Color color)

public InnerShadow(BlurType blurType, Color color, double radius, double choke, double offsetX, double offsetY)

blurType: the algorithm used to blur the shadow

color: the shadow color

radius: the radius of the shadow blur kernel

choke: the portion of the radius where the contribution of the source material will be 100%

offsetX: the shadow offset in the x direction

offsetY: the shadow offset in the y direction

 

FXML Example

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

       

        <InnerShadow fx:id = "shadow1" radius="5.0" color="gray"

            offsetX="6"

            offsetY="6"/>

    </Text>

 

innerShadow.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">
        
        <InnerShadow fx:id = "shadow1" radius="5.0" color="gray" 
            offsetX="6"
            offsetY="6"/>
    </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">
        
        <InnerShadow fx:id = "shadow1" radius="5.0" color="gray" 
            offsetX="6"
            offsetY="-6"/>
    </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">
        
        <InnerShadow fx:id = "shadow1" radius="5.0" color="gray" 
            offsetX="-6"
            offsetY="6"/>
    </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">
        
        <InnerShadow fx:id = "shadow1" radius="5.0" color="gray" 
            offsetX="-6"
            offsetY="-6"/>
    </Text>
    
    
</Group>

InnerShadowEffectController.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.shape.Rectangle;

public class InnerShadowEffectController implements Initializable {

    @FXML
    private Rectangle rectangle1;

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

    }

}


InnerShadowDemo.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 InnerShadowDemo extends Application {

    private static final String FXML_FILE = "/innerShadow.fxml";
    private static final String STAGE_TITLE = "Inner 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, 1000, 400, Color.WHITE);

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

}


Output





 

 

  

Previous                                                    Next                                                    Home

No comments:

Post a Comment