当前位置: 首页 > 知识库问答 >
问题:

改变整个场景的亮度

公羊瀚
2023-03-14

我试图在javafx中更改整个场景的亮度。这是我的代码目前的样子:

public void start(Stage primaryStage) {
  StackPane root = new StackPane();

  Rectangle rec1 = new Rectangle();
  rec1.setWidth(300);
  rec1.setHeight(300);
  rec1.setFill(javafx.scene.paint.Color.RED);

  ColorAdjust colorAdjust = new ColorAdjust();
  colorAdjust.setBrightness(-0.8);

  root.setEffect(colorAdjust);

  Scene scene = new Scene(root, 1920, 1080);
  root.getChildren().add(rec1);

  primaryStage.setFullScreen(true);
  primaryStage.setScene(scene);
  primaryStage.show();
}

问题是,像这样只改变矩形的亮度,而不改变整个场景的亮度,我还需要改变“背景”的亮度,那有什么办法吗?

共有1个答案

尹赞
2023-03-14

奇怪的是,通过向<code>StackPaneColorAdjusted仅此而已。必须至少存在一个节点。将一行更改为以下行将满足您的需要:

root.getChildren().addAll(rec1, new Label());

然而,这可能会对您的项目产生影响,即使它是空的,也会稍微改变一些。我们可以通过使其不可见和不受管理来解决这一问题,以便在布局计算中不考虑它。

Label fix = new Label("Fix colorAdjust whole scene.");
fix.setVisible(false);
fix.setManaged(false);

Scene scene = new Scene(root, 500, 500);
root.getChildren().addAll(rec1, fix);
 类似资料:
  • 我正在尝试将FXML加载到FXML中。主FXML有一个borderpane,第二个包含一个VBox。我用FXMLLoader加载这两个。当我尝试设置boarderpane的中心时,整个屏幕将被第二个FXML所取代。这是代码 有什么想法会导致这种情况吗?我还尝试制作一个新标签,并将其放在borderpane中心,结果相同。

  • 为什么改变java.awt.canvas的背景颜色就改变了整个框架的背景? 这可能是问题所在吗(我在Ubuntu上运行这个)? 还是我在这里遗漏了什么?

  • }`我正在计划在同一舞台上使不同的部分成为自己的场景。如果有任何帮助,我将不胜感激。我正在使用NetBeans8.2。

  • 我的问题:我希望能够改变资源图像的亮度,并有三个实例作为ImageIcons。一个在50%的亮度(所以更暗),另一个在75%的亮度(稍微亮一点),最后一个在100%的亮度(与原始图像相同)。我还想保持透明度。 我试过的:我到处找了找,看起来最好的解决方案是使用,但我就是想不通。我不知道缩放因子和偏移量是怎么回事。这是我尝试的代码。 呼叫将是这样的: 这段代码会发生什么:图像看起来是“不可见的”,我

  • 我对OpenGL有点生疏,我已经实现了一个场景的照明,场景中有小行星围绕行星旋转的实例。出于某种原因,我得到的唯一输出似乎是场景的环境照明。我无法使漫反射或镜面反射工作。 这是现场的一张照片(很难看到…)仅限环境 片段着色器代码如下所示。FragPos、Normal和TexCoords都是你所期待的。纹理_diffuse1是行星/小行星纹理,具体取决于使用的着色器。LightPos可以移动,它由图