我在 JavaFX 中向图像添加框架,首先将框架添加到 Canvas ,然后添加图像, 这样它就会重叠并且图像看起来有一个框架。
由于某种原因,我的图像扭曲了,缩放效果很差,使得其中的所有内容看起来都“胖”。
如果我尝试在 ImageView
(代码中名为“image”的变量)中显示图像,它看起来很正常,
所以我尝试从正常的 ImageView
中获取值(width
和 height
),但仍然没有运气:
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());
原始图片:
框架和扭曲(头部看起来更圆):
最佳答案
我自己还没有对此进行测试,但我注意到您的代码有一些事情。
首先,线路
image.preserveRatioProperty();
实际上并不改变 ImageView 的任何状态,它所做的只是告诉您 ImageView 是否设置为保留比率。
您可能想要的是:
image.setPreserveRatio(true);
我相信这可能会做你想要的。
如果没有,可能是因为图像已经加载,所以如果这仍然不起作用,请尝试将 image.setPreserveRatio(true);
放在 image 之前。 setImage(i);
关于JavaFX Canvas 扭曲图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24371319/