📅  最后修改于: 2023-12-03 15:01:36.525000             🧑  作者: Mango
JavaFX 是Java平台的一个GUI工具包,提供了一些UI组件和丰富的图像、媒体、动画支持。颜色作为界面设计的重要元素,JavaFX 提供了一些方便的 API 用于创建、设置和管理颜色。下面我们来详细介绍 JavaFX 中的颜色相关的内容。
JavaFX 提供了一个颜色类用于表示颜色,即 javafx.scene.paint.Color
,它可用于创建一个颜色对象,同时它也是 JavaFX 中所有使用颜色的 API 的基础类。
创建一个颜色对象有多种方式:
Color color = Color.rgb(255, 0, 0);
Color color = Color.rgb(255, 0, 0, 0.5);
Color color = Color.hsb(120, 1, 1);
Color.web("red")
或 Color.web("#ff0000")
。支持的颜色名称和格式请参考JavaFX 官方文档当我们创建了一个颜色对象后,我们可以获取它的各种属性。例如:
double red = color.getRed(); //取值范围为 0.0 ~ 1.0
double green = color.getGreen();
double blue = color.getBlue();
double opacity = color.getOpacity();
double hue = color.getHue(); //取值范围为 0.0 ~ 360.0
double saturation = color.getSaturation();
double brightness = color.getBrightness();
double opacity = color.getOpacity();
JavaFX 提供一些预定义颜色用于快捷创建颜色对象,这些预定义颜色名称和颜色值可以在 javafx.scene.paint.Color
类中找到。
Color color = Color.RED; //红色
Color color = Color.GREEN; //绿色
Color color = Color.BLUE; //蓝色
Color color = Color.BLACK; //黑色
Color color = Color.WHITE; //白色
除此之外,还有一些预定义的灰度色,它们由 Color.gray()
方法创建,它接收一个0.0到1.0之间的值,表示灰度颜色的深度。
Color color = Color.gray(0.5); //浅灰色
JavaFX 中的颜色渐变是指从一个颜色平滑过渡到另一个颜色。JavaFX 提供了两种颜色渐变方式:线性渐变和径向渐变。
线性渐变通过两个点来定义一个变化的线性区域,从而实现颜色的平滑渐变。下面是一个实现从红色到蓝色的线性渐变的例子。
LinearGradient gradient = new LinearGradient(
0, //起始点 X 坐标
0, //起始点 Y 坐标
1, //终点 X 坐标
1, //终点 Y 坐标
true, //循环填充
CycleMethod.NO_CYCLE, //填充方式
new Stop(0, Color.RED), //开始颜色和位置
new Stop(1, Color.BLUE) //结束颜色和位置
);
上面的代码创建了一个渐变,它从左上角到右下角,从红色到蓝色。
径向渐变通过一个点和一个半径范围来定义一个颜色变化区域,以此实现颜色的平滑变化。下面是一个实现从红色到蓝色的径向渐变的例子。
RadialGradient gradient = new RadialGradient(
0.5, //中心点 X 坐标
0.5, //中心点 Y 坐标
0.5, //半径
0.5, //焦点 X 坐标
0.5, //焦点 Y 坐标
true, //循环填充
CycleMethod.NO_CYCLE, //填充方式
new Stop(0, Color.RED), //开始颜色和位置
new Stop(1, Color.BLUE) //结束颜色和位置
);
上面的代码创建了一个渐变,它从圆心向外,从红色到蓝色,半径为 0.5。
当我们需要在不同的颜色表示形式间互相转换时,JavaFX 提供了一些方便的 API。
JavaFX 提供了 Color.rgb()
和 Color.hsb()
来分别创建 RGB 和 HSB 型的颜色对象,我们也可以使用相应的方法把这两种颜色表示方式相互转换。
Color rgbColor = Color.rgb(255, 0, 0); //红色
Color hsbColor = rgbColor.hsb();
//分别输出 hue=0.0, saturation=1.0, brightness=1.0, opacity=1.0
System.out.println("hue=" + hsbColor.getHue()
+ ", saturation=" + hsbColor.getSaturation()
+ ", brightness=" + hsbColor.getBrightness()
+ ", opacity" + hsbColor.getOpacity());
JavaFX 中使用颜色字符串来表示颜色,常见的有 #RRGGBB 或 #RGB 形式。我们可以使用相应的方法来将颜色字符串转换为颜色对象。
Color color = Color.web("#ff0000"); //红色
同样地,也可以通过 Color.toString()
方法将颜色对象转换为颜色字符串。
Color color = Color.rgb(255, 0, 0); //红色
String colorStr = color.toString(); //"0x0000FFFF"
最后,让我们来看一下如何在 JavaFX 中应用颜色。
大多数JavaFX UI元素都继承自 javafx.scene.Node
类,而它们有一个 .setFill() 方法用于设置背景颜色。例如,以下代码将一个圆的背景颜色设置为红色。
Circle circle = new Circle();
circle.setFill(Color.RED);
JavaFX 中的 javafx.scene.text.Text
类代表一个文本段落,它有 .setFill()
方法用于设置文本颜色。例如,以下代码将一个文本段落的颜色设置为红色。
Text text = new Text("Hello, JavaFX!");
text.setFill(Color.RED);
JavaFX 中的 javafx.scene.shape.Shape
类代表一条线条或一个形状,而它们都有 .setStroke()
方法用于设置线条或边框颜色。例如,以下代码将一个矩形的边框颜色设置为红色。
Rectangle rect = new Rectangle(100, 100);
rect.setStroke(Color.RED);
本文介绍了 JavaFX 中颜色相关的内容,主要包括颜色类、颜色渐变、颜色转换以及颜色应用等方面。希望对大家有所帮助。