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

Javafx中的旋转图像

柯建修
2023-03-14

ImageView使用什么参考点。setRotate(40)在Javafx中旋转图像?

我正在写

ImageView iv = new ImageView(image);
iv.setRotate(40);
SnapshotParameters params = new SnapshotParameters();
params.setFill(Color.TRANSPARENT);
Image rotatedImage = iv.snapshot(params, null);
gc.drawImage(rotatedImage, 0, 0);

但是图像不会相对于图像的中心旋转。

共有1个答案

张永嘉
2023-03-14

从rotate()文档中:

旋转所围绕的轴心点是未转换布局边界的中心。

因此,图像将围绕它的中心点旋转。

样本:

import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.SnapshotParameters;
import javafx.scene.canvas.Canvas;
import javafx.scene.image.*;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class Rotor extends Application {

    public static final String LOC =
            "http://icons.iconarchive.com/icons/custom-icon-design/flatastic-10/64/Bear-icon.png";

    @Override
    public void start(Stage stage) throws Exception {
        ImageView iv = new ImageView(new Image(LOC));
        iv.setRotate(40);

        SnapshotParameters params = new SnapshotParameters();
        params.setFill(Color.TRANSPARENT);
        Canvas canvas = new Canvas(100, 100);

        Image rotatedImage = iv.snapshot(params, null);
        canvas.getGraphicsContext2D().drawImage(rotatedImage, 0, 0);
        stage.setScene(new Scene(new Group(canvas)));

        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

在画布上绘制旋转图像时,您可能希望使用画布变换而不是快照方法来帮助完成此操作。例如,见:

  • 如何绘制在JavaFX画布上旋转的图像?
 类似资料:
  • 我正在做一个简单的模拟,并且在寻找一个旋转的、大小怪异的ImageView节点的X和Y坐标时遇到了很多麻烦。(蓝色的部分是前面) 目标是在旋转后找出相对于imageView指向的方向的XY坐标。我可以找到imageView相对于其起始位置的角度,但我不知道如何获得imageView相对于该角度的XY坐标。从那以后。setRotate(angle)方法不会更改imageView的X和Y位置,我应该如

  • 我在这个网站上看到过关于javafx中旋转的问题,但我似乎不太明白。下面是一些代码: 为什么当我改变角度时,矩形开始出现在随机位置?例如,当我将角度设置为 180 时,矩形出现在中间。我的理解是,矩形围绕 X:150 和 Y:225 以指定的角度移动。但是,当我将角度设置为180时,我完全错了。你们能帮帮我吗? 编辑:在阅读和看到回答这个问题的代码时,我想我发现了一个新问题。如何设置pivotX和

  • 我正在玩JavaFX,在类开始(阶段阶段)我有以下代码: 我如何在不旋转轴的情况下旋转它?我发现并尝试了以下方法: 然而,当我使用改变位置x移动图像时,它也会变换轴 它可能与BuffereImage一起工作,但他们使用不同的图形类绘制它,我不知道如何使它一起工作。 编辑:好的,如何只旋转图像而不旋转整个图形上下文? 已解决:谢谢大家的帮助:))我已经用这个解决了它

  • 我想旋转组中的图像,并将该组放入HBox中,而没有明显的“弹跳”效果。上图是一个使用JavaFX形状代替图像的例子,但最终结果是一样的。顶部的HBox包含一个旋转矩形,它看起来很好。底部的HBox在同一组中包含一个矩形和一个圆形,但是旋转矩形会导致“弹跳”副作用。为什么会弹跳?以下是我的代码:

  • 当我尝试使用旋转图像视图时,我现在开始学习JavaFX 它绕着它的中轴线旋转,但是当我尝试使用 它随机旋转,我不知道它的旋转轴是一样的

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