JavaFX-색상

응용 프로그램에 색상을 적용하기 위해 JavaFX는 패키지에 다양한 클래스를 제공합니다. javafx.scene.paint꾸러미. 이 패키지에는 Paint라는 추상 클래스가 포함되어 있으며 색상을 적용하는 데 사용되는 모든 클래스의 기본 클래스입니다.

이 클래스를 사용하면 다음 패턴으로 색상을 적용 할 수 있습니다.

  • Uniform −이 패턴에서는 노드 전체에 균일하게 색상이 적용됩니다.

  • Image Pattern −이를 통해 노드 영역을 이미지 패턴으로 채울 수 있습니다.

  • Gradient−이 패턴에서 노드에 적용되는 색상은 한 지점에서 다른 지점으로 다릅니다. 두 종류의 그라디언트가 있습니다.Linear GradientRadial Gradient.

다음과 같이 색상을 적용 할 수있는 모든 노드 클래스 Shape, Text (장면 포함), 명명 된 메서드 setFill()setStroke(). 이것들은 노드와 그 획의 색상 값을 각각 설정하는 데 도움이됩니다.

이러한 메서드는 Paint 유형의 개체를 허용합니다. 따라서 이러한 유형의 이미지 중 하나를 만들려면 이러한 클래스를 인스턴스화하고 개체를 이러한 메서드에 매개 변수로 전달해야합니다.

노드에 색상 적용

노드에 균일 한 색상 패턴을 설정하려면 클래스 색상의 객체를 노드에 전달해야합니다. setFill(), setStroke() 다음과 같이 방법-

//Setting color to the text 
Color color = new Color.BEIGE 
text.setFill(color); 

//Setting color to the stroke 
Color color = new Color.DARKSLATEBLUE 
circle.setStroke(color);

위의 코드 블록에서 색상 객체를 생성하기 위해 색상 클래스의 정적 변수를 사용하고 있습니다.

같은 방식으로 RGB 값 또는 HSB 표준 색상 또는 웹 해시 색상 코드를 아래와 같이 사용할 수도 있습니다.

//creating color object by passing RGB values 
Color c = Color.rgb(0,0,255);   

//creating color object by passing HSB values
Color c = Color.hsb(270,1.0,1.0);  

//creating color object by passing the hash code for web 
Color c = Color.web("0x0000FF",1.0);

다음은 JavaFX에서 노드에 색상을 적용하는 방법을 보여주는 예입니다. 여기에서는 원과 텍스트 노드를 만들고 여기에 색상을 적용합니다.

이 코드를 이름으로 파일에 저장하십시오. ColorExample.java.

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.paint.Color; 
import javafx.stage.Stage; 
import javafx.scene.shape.Circle; 
import javafx.scene.text.Font; 
import javafx.scene.text.Text; 
         
public class ColorExample extends Application { 
   @Override 
   public void start(Stage stage) { 
      //Drawing a Circle 
      Circle circle = new Circle();    
      
      //Setting the properties of the circle 
      circle.setCenterX(300.0f); 
      circle.setCenterY(180.0f); 
      circle.setRadius(90.0f); 
       
      //Setting color to the circle 
      circle.setFill(Color.DARKRED);    
      
      //Setting the stroke width 
      circle.setStrokeWidth(3); 
      
      //Setting color to the stroke  
      circle.setStroke(Color.DARKSLATEBLUE);
      
      //Drawing a text 
      Text text = new Text("This is a colored circle"); 
      
      //Setting the font of the text 
      text.setFont(Font.font("Edwardian Script ITC", 50)); 
      
      //Setting the position of the text 
      text.setX(155); 
      text.setY(50); 
       
      //Setting color to the text 
      text.setFill(Color.BEIGE); 
      text.setStrokeWidth(2); 
      text.setStroke(Color.DARKSLATEBLUE); 
         
      //Creating a Group object  
      Group root = new Group(circle, text); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 300);  
      
      //Setting title to the Stage 
      stage.setTitle("Color 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 ColorExample.java 
java ColorExample

실행시 위의 프로그램은 다음과 같이 JavaFX 창을 생성합니다.

노드에 이미지 패턴 적용

노드에 이미지 패턴을 적용하려면 ImagePattern 클래스에 객체를 전달합니다. setFill(), setStroke() 행동 양식.

이 클래스의 생성자는 6 개의 매개 변수를받습니다.

  • Image − 패턴을 만들려는 이미지의 개체.

  • x and y − 앵커 직사각형 원점의 (x, y) 좌표를 나타내는 이중 변수.

  • height and width − 패턴을 만드는 데 사용되는 이미지의 높이와 너비를 나타내는 이중 변수.

  • isProportional− 이것은 부울 변수입니다. 이 속성을 true로 설정하면 시작 위치와 끝 위치가 비례하도록 설정됩니다.

ImagePattern radialGradient = new ImagePattern(dots, 20, 20, 40, 40, false);

다음은 JavaFX의 노드에 이미지 패턴을 적용하는 방법을 보여주는 예입니다. 여기에서는 원과 텍스트 노드를 만들고 여기에 이미지 패턴을 적용합니다.

이 코드를 이름이있는 파일에 저장 ImagePatternExample.java.

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.image.Image; 

import javafx.scene.paint.Color; 
import javafx.scene.paint.ImagePattern; 
import javafx.scene.paint.Stop; 

import javafx.stage.Stage; 
import javafx.scene.shape.Circle; 
import javafx.scene.text.Font; 
import javafx.scene.text.Text; 
         
public class ImagePatternExample extends Application { 
   @Override 
   public void start(Stage stage) {           
      //Drawing a Circle 
      Circle circle = new Circle();    
      
      //Setting the properties of the circle 
      circle.setCenterX(300.0f); 
      circle.setCenterY(180.0f); 
      circle.setRadius(90.0f); 
       
      //Drawing a text 
      Text text = new Text("This is a colored circle"); 
      
      //Setting the font of the text 
      text.setFont(Font.font("Edwardian Script ITC", 50)); 
      
      //Setting the position of the text
      text.setX(155); 
      text.setY(50); 
       
      //Setting the image pattern 
      String link = "https://encrypted-tbn1.gstatic.com" 
         + "/images?q=tbn:ANd9GcRQub4GvEezKMsiIf67U" 
         + "rOxSzQuQ9zl5ysnjRn87VOC8tAdgmAJjcwZ2qM";       
      
      Image image = new Image(link); 
      ImagePattern radialGradient = new ImagePattern(image, 20, 20, 40, 40, false); 
       
      //Setting the linear gradient to the circle and text 
      circle.setFill(radialGradient); 
      text.setFill(radialGradient); 
         
      //Creating a Group object  
      Group root = new Group(circle, text); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 300);  
      
      //Setting title to the Stage 
      stage.setTitle("Image pattern 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 ImagePatternExample.java 
java ImagePatternExample

실행시 위의 프로그램은 다음과 같이 JavaFX 창을 생성합니다.

선형 그라디언트 패턴 적용

선형 그래디언트 패턴을 노드에 적용하려면 LinearGradient 클래스에 객체를 전달합니다. setFill(), setStroke() 행동 양식.

이 클래스의 생성자는 5 개의 매개 변수를받습니다.

  • startX, startY − 이러한 이중 속성은 그라디언트 시작점의 x 및 y 좌표를 나타냅니다.

  • endX, endY − 이러한 이중 속성은 그라디언트 끝점의 x 및 y 좌표를 나타냅니다.

  • cycleMethod −이 인수는 시작점과 끝점으로 정의 된 색상 그라데이션 경계 밖의 영역을 채우는 방법을 정의합니다.

  • proportional− 이것은 부울 변수입니다. 이 속성을true, 시작 및 끝 위치는 비율로 설정됩니다.

  • Stops −이 인수는 그라디언트 선을 따라 색상 중지 지점을 정의합니다.

//Setting the linear gradient 
Stop[] stops = new Stop[] { 
   new Stop(0, Color.DARKSLATEBLUE),  
   new Stop(1, Color.DARKRED)
};  
LinearGradient linearGradient = 
   new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE, stops);

다음은 JavaFX의 노드에 그라디언트 패턴을 적용하는 방법을 보여주는 예입니다. 여기에서는 원과 텍스트 노드를 만들고 여기에 선형 그래디언트 패턴을 적용합니다.

이 코드를 이름이있는 파일에 저장 LinearGradientExample.java.

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 

import javafx.scene.paint.Color; 
import javafx.scene.paint.CycleMethod; 
import javafx.scene.paint.LinearGradient; 
import javafx.scene.paint.Stop; 

import javafx.stage.Stage; 
import javafx.scene.shape.Circle; 
import javafx.scene.text.Font; 
import javafx.scene.text.Text; 
         
public class LinearGradientExample extends Application { 
   @Override 
   public void start(Stage stage) {           
      //Drawing a Circle 
      Circle circle = new Circle();    
      
      //Setting the properties of the circle 
      circle.setCenterX(300.0f);  
      circle.setCenterY(180.0f); 
      circle.setRadius(90.0f); 
      
      //Drawing a text 
      Text text = new Text("This is a colored circle"); 
      
      //Setting the font of the text 
      text.setFont(Font.font("Edwardian Script ITC", 55)); 
      
      //Setting the position of the text 
      text.setX(140); 
      text.setY(50); 
       
      //Setting the linear gradient 
      Stop[] stops = new Stop[] { 
         new Stop(0, Color.DARKSLATEBLUE),  
         new Stop(1, Color.DARKRED)
      };  
      LinearGradient linearGradient = 
         new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE, stops); 
       
      //Setting the linear gradient to the circle and text 
      circle.setFill(linearGradient); 
      text.setFill(linearGradient); 
         
      //Creating a Group object  
      Group root = new Group(circle, text); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 300);  
      
      //Setting title to the Stage 
      stage.setTitle("Linear Gradient 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 LinearGradientExample.java 
java LinearGradientExample

실행시 위의 프로그램은 다음과 같이 JavaFX 창을 생성합니다.

방사형 그라데이션 패턴 적용

방사형 그라데이션 패턴을 노드에 적용하려면 GradientPattern 클래스에 객체를 전달합니다. setFill(), setStroke() 행동 양식.

이 클래스의 생성자는 몇 가지 매개 변수를받습니다.

  • startX, startY − 이러한 이중 속성은 그라디언트 시작점의 x 및 y 좌표를 나타냅니다.

  • endX, endY − 이러한 이중 속성은 그라디언트 끝점의 x 및 y 좌표를 나타냅니다.

  • cycleMethod −이 인수는 시작점과 끝점으로 색상 그라데이션 경계 밖의 영역을 정의하는 방법과 채워야하는 방법을 정의합니다.

  • proportional− 이것은 부울 변수입니다. 이 속성을true 시작 및 끝 위치는 비율로 설정됩니다.

  • Stops −이 인수는 그라디언트 선을 따라 색상 중지 지점을 정의합니다.

//Setting the radial gradient 
Stop[] stops = new Stop[] { 
   new Stop(0.0, Color.WHITE),  
   new Stop(0.3, Color.RED), 
   new Stop(1.0, Color.DARKRED) 
};        

RadialGradient radialGradient = 
   new RadialGradient(0, 0, 300, 178, 60, false, CycleMethod.NO_CYCLE, stops);

다음은 JavaFX의 노드에 방사형 그래디언트 패턴을 적용하는 방법을 보여주는 예입니다. 여기에서는 원과 텍스트 노드를 만들고 여기에 그라디언트 패턴을 적용합니다.

이 코드를 이름으로 파일에 저장하십시오. RadialGradientExample.java.

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 

import javafx.scene.paint.Color; 
import javafx.scene.paint.CycleMethod; 
import javafx.scene.paint.RadialGradient;  
import javafx.scene.paint.Stop; 

import javafx.stage.Stage; 
import javafx.scene.shape.Circle; 
import javafx.scene.text.Font; 
import javafx.scene.text.Text;   

public class RadialGradientExample extends Application {  
   @Override 
   public void start(Stage stage) { 
      //Drawing a Circle 
      Circle circle = new Circle(); 
      
      //Setting the properties of the circle 
      circle.setCenterX(300.0f); 
      circle.setCenterY(180.0f); 
      circle.setRadius(90.0f);  
      
      //Drawing a text 
      Text text = new Text("This is a colored circle"); 
      
      //Setting the font of the text 
      text.setFont(Font.font("Edwardian Script ITC", 50)); 
      
      //Setting the position of the text 
      text.setX(155); 
      text.setY(50);  
      
      //Setting the radial gradient 
      Stop[] stops = new Stop[] { 
         new Stop(0.0, Color.WHITE),  
         new Stop(0.3, Color.RED), 
         new Stop(1.0, Color.DARKRED) 
      };        
      RadialGradient radialGradient = 
         new RadialGradient(0, 0, 300, 178, 60, false, CycleMethod.NO_CYCLE, stops);  
      
      //Setting the radial gradient to the circle and text 
      circle.setFill(radialGradient); 
      text.setFill(radialGradient);  
      
      //Creating a Group object  
      Group root = new Group(circle, text);  
      
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 300); 
      
      //Setting title to the Stage 
      stage.setTitle("Radial Gradient 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 RadialGradientExample.java 
java RadialGradientExample

실행시 위의 프로그램은 다음과 같이 JavaFX 창을 생성합니다.