【发布时间】:2016-02-10 08:48:14
【问题描述】:
我正在玩 JavaFX,在类 start(Stage theStage) 中我有以下代码:
/*... Scene, stage, canvas ...*/
GraphicsContext gc = canvas.getGraphicsContext2D();
Image imgage = new Image("gfx/image.png");
gc.drawImage(image, 256, 256);
如何在不旋转轴的情况下旋转绘制它?我已经找到并尝试了这个:
gc.save(); // saves the current state on stack, including the current transform
gc.rotate(45);
gc.drawImage(image);
gc.restore();
但是,它也会改变轴,当我使用改变位置 x 和 y 移动图像时,它会出错,因为它也会使轴旋转。我一直在考虑使用 sin 和 cos 函数重新计算运动,但我确信有这样一个更简单的解决方案。
它可能适用于 BufferedImage,但他们使用不同的 Graphics 类来绘制它,我不知道如何使它一起工作。
编辑:好的,如何只旋转图像而不旋转整个 GraphicsContext?
已解决: 谢谢大家的帮助:)) 我已经用这个解决了这个问题>>
ImageView iv = new ImageView(new Image( "gfx/earth.png"));
iv.setRotate(40);
SnapshotParameters params = new SnapshotParameters();
params.setFill(Color.TRANSPARENT);
Image rotatedImage = iv.snapshot(params, null);
gc.drawImage(rotatedImage, 0, 0);
【问题讨论】:
-
为什么要在
Canvas上绘制图像?你能改用ImageView吗? -
我不太明白您的问题中的“旋转轴”是什么意思。什么轴?是不是您在未提供的其他代码中显示的轴的一些可见渲染?
-
很可能,这个问题与How to draw image rotated on JavaFX Canvas? 重复,但我很难确定。
-
@jewelsea 我已经尝试了您链接中的解决方案..但这会导致坐标系问题。
-
我觉得我的问题很容易理解
标签: java image javafx rotation transform