Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaFX中刷新矩形_Java_User Interface_Javafx - Fatal编程技术网

在JavaFX中刷新矩形

在JavaFX中刷新矩形,java,user-interface,javafx,Java,User Interface,Javafx,如何在JavaFX中使矩形在视图中闪烁 我正在做一个单词搜索游戏,我有一个随机的字符的2D数组。 我正在将此阵列打印到600x600画布上,如下所示: for (int i = 0; i < gameBoard.length; i++) { for (int j = 0; j < gameBoard[0].length; j++) { gc.fillText(String.valueOf(gameBoard[i][j]), (25 + (20

如何在JavaFX中使矩形在视图中闪烁

我正在做一个单词搜索游戏,我有一个随机的
字符的2D数组。
我正在将此阵列打印到600x600画布上,如下所示:

for (int i = 0; i < gameBoard.length; i++) {
        for (int j = 0; j < gameBoard[0].length; j++) {
            gc.fillText(String.valueOf(gameBoard[i][j]), (25 + (20 * j)), (25 + (20 * i)));
        }
    }
这意味着我可以通过增加
rowSelection
colSelection
来移动正方形。这使得:

现在唯一的问题是,我需要一个矩形来闪烁,这样当被选中时,下面的字母仍然可见。我该怎么做?我尝试过将颜色设置为不透明,但这也会导致游戏板的其他部分变得不可见。有没有一种方法我想不出来? 我是JavaFX新手,因此非常感谢您的帮助。

使用
save()
restore()
将颜色更改回旧值,或通过自己将属性设置为旧值来恢复旧值

在黑色背景上添加白色文本的最简单方法是:

  • 填充设置为黑色
  • 画矩形
  • 填充设置为白色
  • 画课文
  • 如果在您的情况下不可能这样做,您可以在绘制文本之前绘制白色背景,然后使用
    DIFFERENCE
    作为混合模式在文本顶部绘制白色矩形,以反转矩形中的颜色:

    Canvas canvas = new Canvas(400, 400);
    GraphicsContext gc = canvas.getGraphicsContext2D();
    gc.setFill(Color.WHITE);
    gc.fillRect(0, 0, canvas.getWidth(), canvas.getHeight());
    gc.setFill(Color.BLACK);
    gc.fillText("Hello world", 30, 30);
    gc.save();
    gc.setGlobalBlendMode(BlendMode.DIFFERENCE);
    gc.setFill(Color.WHITE);
    gc.fillRect(10, 10, 100, 100);
    gc.restore(); // restore old settings
    
    // some more rendering with old settings
    gc.fillRect(100, 100, 100, 100);
    
    Canvas canvas = new Canvas(400, 400);
    GraphicsContext gc = canvas.getGraphicsContext2D();
    gc.setFill(Color.WHITE);
    gc.fillRect(0, 0, canvas.getWidth(), canvas.getHeight());
    gc.setFill(Color.BLACK);
    gc.fillText("Hello world", 30, 30);
    gc.save();
    gc.setGlobalBlendMode(BlendMode.DIFFERENCE);
    gc.setFill(Color.WHITE);
    gc.fillRect(10, 10, 100, 100);
    gc.restore(); // restore old settings
    
    // some more rendering with old settings
    gc.fillRect(100, 100, 100, 100);