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

如何在javafx中反转矩形图像

傅博瀚
2023-03-14

此外,我已经把我的矩形在锚窗,如果这是重要的知道。

共有1个答案

锺离逸春
2023-03-14

最简单的选择可能是转换节点,而不是尝试翻转图像本身。这样做的两个好处是:

  1. JavaFX提供了转换(平移、旋转、缩放等)节点的简单方法,以及
  2. 您可以对所有节点使用单个图像

正如@mipa所指出的,在这种情况下要使用的最简单的转换是缩放。若要水平翻转节点,请使用node.setscalex(-1)。若要垂直翻转节点,请使用node.setscaley(-1)

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.layout.GridPane;
import javafx.scene.paint.ImagePattern;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class Main extends Application {

  @Override
  public void start(Stage primaryStage) {
    double width = 250;
    double height = 250;

    Image image = new Image(/* your image URL */, width, height, true, true);
    ImagePattern fill = new ImagePattern(image);

    Rectangle normal = new Rectangle(width, height, fill);
    Rectangle horizontal = new Rectangle(width, height, fill);
    Rectangle vertical = new Rectangle(width, height, fill);
    Rectangle both = new Rectangle(width, height, fill);

    flipNode(horizontal, true, false);
    flipNode(vertical, false, true);
    flipNode(both, true, true);

    GridPane grid = new GridPane();
    grid.setVgap(10);
    grid.setHgap(10);
    grid.setPadding(new Insets(10));
    grid.setAlignment(Pos.CENTER);
    grid.add(normal, 0, 0);
    grid.add(horizontal, 1, 0);
    grid.add(vertical, 0, 1);
    grid.add(both, 1, 1);

    primaryStage.setScene(new Scene(grid));
    primaryStage.show();
  }

  private void flipNode(Node node, boolean horiztonally, boolean vertically) {
    node.setScaleX(horiztonally ? -1 : 1);
    node.setScaleY(vertically ? -1 : 1);
  }
}
 类似资料:
  • 我刚开始使用JavaFX,有一个问题。在我的项目中,我想使用旋转矩形。但矩形只围绕其中心旋转,我希望它围绕其左上角旋转。 就像这张照片(从这里开始): 下面是我的项目中的一些代码: 在这种情况下,如果按下箭头键,矩形会旋转。

  • 我试着绕着它的中心旋转一个矩形。使用GraphicsContext ie gc将旋转绘制到画布上。这是我的绘图代码。 这会将矩形移动到其中心,然后围绕其左上角点旋转矩形。我试着把两边的长度和宽度减半,但那只会让它飞得到处都是。我数学不好也许这里有更好的人能告诉我我做错了什么。 如果需要的话,我还存储了矩形的所有四个点(角)。 谢了乔

  • 在JavaFX中,我怎么能让一个矩形闪烁到视图之外。 我正在制作一个单词搜索游戏,我有一个随机的2D数组。我正在将此数组打印到600x600画布上,如下所示: 我也有一个正方形绘制在同一画布上,就像这样: 这意味着我可以通过增加和来移动正方形。这给了:这个。 现在唯一的问题是,我需要一个矩形来闪烁,这样当选中时,下面的字母仍然可见。我该怎么做?我尝试将颜色设置为不透明,但这也会导致游戏板的其他部分

  • 我正在用Java和JAVAFX开发一个国际象棋游戏。我的棋盘是一个JAVAFX组,包含一个正方形数组。我的正方形继承自JAVAFX rectangle类。我想在这些方块里面画一个图像(棋子的图像),但是我似乎找不到方法。当我使用setfill来绘制图案时,正方形的颜色消失了,这不是我想要的,我希望图像是透明的,并绘制在每个正方形的顶部。有什么想法吗?

  • 在pygame中,我对我的程序中的所有矩形使用。我希望能够将这些矩形旋转到任何角度。我已经看到了以下旋转IMAGES的代码,但我的问题是RECTANGLES。 但是我正在使用矩形,我没有可以旋转的图像或“表面”。当我尝试旋转矩形时 这就给出了 我的问题是,如何在pygame中旋转a并显示矩形<code>(x,y,w,h),而不是图像。 这是“潜在重复”的链接帖子不是重复的。一个答案解释了旋转矩形的

  • 在我的情况下,矩形接触圆形,但我认为没关系。 起初,我试着用两个Ficture来做同样的身体,但旋转有一个问题:我不能有一个带旋转的Ficture,另一个没有。 我认为,它应该与关节有某种联系,但我不知道我应该使用什么关节。也许还有其他解决方案?