JavaFX-색상
응용 프로그램에 색상을 적용하기 위해 JavaFX는 패키지에 다양한 클래스를 제공합니다. javafx.scene.paint꾸러미. 이 패키지에는 Paint라는 추상 클래스가 포함되어 있으며 색상을 적용하는 데 사용되는 모든 클래스의 기본 클래스입니다.
이 클래스를 사용하면 다음 패턴으로 색상을 적용 할 수 있습니다.
Uniform −이 패턴에서는 노드 전체에 균일하게 색상이 적용됩니다.
Image Pattern −이를 통해 노드 영역을 이미지 패턴으로 채울 수 있습니다.
Gradient−이 패턴에서 노드에 적용되는 색상은 한 지점에서 다른 지점으로 다릅니다. 두 종류의 그라디언트가 있습니다.Linear Gradient 과 Radial 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 창을 생성합니다.