JavaFX Canvas会扭曲图像

时间:2014-06-23 16:56:05

标签: java image canvas javafx

我首先将帧添加到JavaFX中的图像,首先将帧添加到画布然后再添加到图像中, 所以它重叠,图像似乎有一个框架。

由于某些原因,我的图像变形,它的缩放很差,并使其中的所有内容看起来都很胖"。 如果我尝试在ImageView(代码中名为"图像"变量)中显示图像,它看起来很正常, 所以我试图从正常的width中获取值(heightImageView),但仍然没有运气:

Image i = new Image(path.toUri().toString());
image.setImage(i);

canvas.setWidth(image.getFitWidth() + 20);
canvas.setHeight(image.getFitHeight() + 20);

GraphicsContext gc1 = canvas.getGraphicsContext2D();
gc1.drawImage(rimage, 0, 0, image.getFitWidth() + 20, image.getFitHeight() + 20);

GraphicsContext gc = canvas.getGraphicsContext2D();
image.preserveRatioProperty();
gc.drawImage(i, 10, 10, image.getFitWidth(), image.getFitHeight());

原始图片:

Original

陷害和扭曲(头部看起来更圆):

Framed and distorted

2 个答案:

答案 0 :(得分:0)

我自己没有对此进行过测试,但我发现了一些关于代码的注意事项。

首先,行

image.preserveRatioProperty();

实际上并没有改变ImageView的任何状态,它只是告诉你ImageView是否设置为保留比率。

你可能想要的是:

image.setPreserveRatio(true);

我相信它可能会做你想要的。

如果没有,可能是因为图片已经加载,所以如果这仍然不起作用,请尝试在image.setPreserveRatio(true);之前放置image.setImage(i);

答案 1 :(得分:0)

窗口的宽度是不是太宽了?尝试使用另一个drawImage裁剪图像,您可以在其中定义要使用的图像部分。或者更改窗口大小。或使用宽度和高度绘制相对于图像中的宽度和高度。