JavaFX - 灯光效果 - (聚光灯作为光源)

  • 简述

    将此效果应用于节点时,会在其上模拟灯光,就好像它是由聚光灯生成的一样。
    Spot Light Source− 来自该光源的光向各个方向衰减。光的强度取决于物体与光源的距离。
    点光源
    类名为 Light.Spot 包裹的 javafx.scene.effect代表远处的光源。这个类包含四个属性,它们是 -
    • pointsAtX − 此属性属于 double 类型,它表示此光向量方向的 x 坐标。
    • pointsAtY - 此属性属于 double 类型,它表示此光的矢量方向的 y 坐标。
    • pointsAtZ − 此属性属于 double 类型,它表示此光的矢量方向的 z 坐标。
    • specularExponent − 此属性属于 double 类型,它表示镜面反射指数,该指数控制此光源的焦点。
  • 例子

    以下程序是演示 JavaFX 灯光效果的示例。在这里,我们在场景中绘制了一个文本“Welcome to Tutorialspoint”和一个圆圈。
    对于这些,我们正在应用照明效果,其中的光是由聚光灯发出的。
    将此代码保存在名称为的文件中 SpotLightExample.java.
    
    import javafx.application.Application; 
    import javafx.scene.Group; 
    import javafx.scene.Scene;  
    import javafx.scene.effect.Light;
    import javafx.scene.effect.Lighting; 
    import javafx.scene.paint.Color; 
    import javafx.scene.shape.Circle; 
    import javafx.stage.Stage; 
    import javafx.scene.text.Font; 
    import javafx.scene.text.FontWeight; 
    import javafx.scene.text.Text; 
             
    public class SpotLightExample extends Application { 
       @Override 
       public void start(Stage stage) { 
          //Creating a Text object 
          Text text = new Text();       
          
          //Setting font to the text 
          text.setFont(Font.font(null, FontWeight.BOLD, 40));       
          
          //setting the position of the text 
          text.setX(60); 
          text.setY(50); 
          
          //Setting the text to be embedded. 
          text.setText("Welcome to Tutorialspoint");       
          
          //Setting the color of the text 
          text.setFill(Color.RED);   
           
          //Drawing a Circle 
          Circle circle = new Circle();         
          
          //Setting the centre of the circle 
          circle.setCenterX(300.0f); 
          circle.setCenterY(160.0f); 
          
          //Setting the radius of the circle 
          circle.setRadius(100.0f); 
          
          //setting the fill color of the circle  
          circle.setFill(Color.CORNFLOWERBLUE);
          
          //Instantiating the Light.Spot class 
          Light.Spot light = new Light.Spot(); 
          
          //Setting the color of the light 
          light.setColor(Color.GRAY); 
          
          //setting the position of the light 
          light.setX(70); 
          light.setY(55); 
          light.setZ(45); 
           
          //Instantiating the Lighting class  
          Lighting lighting = new Lighting(); 
          
          //Setting the light source 
          lighting.setLight(light);  
          
          //Applying lighting effect to the text 
          text.setEffect(lighting);      
          
          //Applying lighting effect to the circle 
          circle.setEffect(lighting); 
             
          //Creating a Group object  
          Group root = new Group(text,circle);   
                   
          //Creating a scene object 
          Scene scene = new Scene(root, 600, 300);  
          
          //Setting title to the Stage 
          stage.setTitle("Spot light effect 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); 
       } 
    }   
    
    使用以下命令从命令提示符编译并执行保存的 java 文件。
    
    javac SpotLightExample.java 
    java SpotLightExample