java - 如何在 JavaFX 中制作一个图像覆盖另一个图像并在 ActionTimer 中再次更改它?

标签 java image javafx effects

我想将上下移动的图像“地球”放在图像“太阳”的前面,这样就可以创建 3D 效果。

我已经尝试使用 setBlendMode 但显然这不适用于图像。

这是我的代码:

theStage.setTitle( "Timeline Example" );

        Group root = new Group();
        Scene theScene = new Scene( root );
        theStage.setScene( theScene );

        Canvas canvas = new Canvas( 512, 512 );
        root.getChildren().add( canvas );

        GraphicsContext gc = canvas.getGraphicsContext2D();

        Image earth = new Image( "/experiment/img/earth.png" );
        Image sun   = new Image( "/experiment/img/sun.png" );
        Image space = new Image( "/experiment/img/space.png" );

        final long startNanoTime = System.nanoTime();

        new AnimationTimer()
        {
            public void handle(long currentNanoTime)
            {
                double t = (currentNanoTime - startNanoTime) / 1000000000.0;

                double x = 232;
                double y = 232 + 128 * Math.sin(t);

                // background image clears canvas
                gc.drawImage( space, 0, 0 );
                gc.drawImage( earth, x, y );
                gc.drawImage( sun, 196, 196 );
            }
        }.start();

        theStage.show();
    }

如何让地球在每次太阳落山时都位于太阳上方?

earth.png

sun.png

space.png

最佳答案

我正在寻找函数 toBack() 和 toFront() ,它们的作用完全按照他们所说的进行。他们将 ImageView 或任何其他节点放在后台/前台。我不再使用 Canvas 了。感谢我的 Java 老师,我找到了它们。

关于java - 如何在 JavaFX 中制作一个图像覆盖另一个图像并在 ActionTimer 中再次更改它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55983186/

相关文章:

java - 线程池,worker既是生产者又是消费者

c# - Windows Phone 7,条件矩形填充到新的 ImageSource 可能吗?

JavaFx GridPane布局如何为行中的元素设置边距?

java - 使用 html 布局创建 JavaFX 弹出窗口

java - 画箭头不起作用

java - 需要帮助解释用 java 制作的电影节目的座位

java - 当尝试使用 java 访问 Elastic Search 时,得到空响应

java - 无法在内存中的 sqlite 数据库上创建表,没有任何错误消息

javascript - 通过迭代列表来更改图像的 src

ios - 如何将选定的 UIDatePicker 日期显示为 UIButton 文本?