【问题标题】:Shrinking JavaFX Graphics缩小 JavaFX 图形
【发布时间】:2017-05-30 09:50:35
【问题描述】:

我正在寻找一种方法来渲染隐藏在视图中的场景,然后创建第二个缩小副本以进行初始显示。显然,我可以再次渲染内容以创建更小的副本。用另一种语言编写的原始代码虽然使用平滑(空间过滤)收缩功能来创建小副本,但产生了更好的结果。 JavaFX中是否有这样的位图复制/收缩/平滑功能,有什么好处吗?

【问题讨论】:

  • Node 类中有一个setScaleX(double value) 函数,这是你要找的吗?
  • 我认为,并且我希望我没有误解,setScale 函数作为“另一种方式”的一部分会很有用。换句话说,如果我要重绘场景而不是执行位图复制。
  • 不完全确定我理解这个问题,但您可以snapshot 现有场景创建一个Image,然后以ImageView 显示缩放的图像。使用setFitHeight()setFitWidth()setPreserveRatio()setSmooth() 控制缩放。这只会给出场景的静态视图,因此,例如,如果有动画,您将不会在图像中看到这些动画。
  • 听起来可能是方法。它只需要是静态的。如果我理解,那么 setFitHeight() 将允许我与相应的 setFit Width() 一起缩小捕获的图像,例如,使这些图像成为原始图像的一半会将场景压缩到显示像素数的四分之一。那么似乎 setSmooth() 为真将给出一个空间过滤的缩小版本。现在唯一的问题是过滤效果如何?非常感谢詹姆斯。

标签: java javafx copy zooming shrink


【解决方案1】:

您可以将场景的快照创建为WritableImage,如下所示:

Scene scene =  ... ;

Image image = scene.snapshot(null);

然后在图像视图中显示它的缩放版本:

ImageView sceneImage = new ImageView();
sceneImage.setFitWidth(desiredWidth);
sceneImage.setFitHeight(desiredHeight);
// force aspect ratio to be preserved if fitWidth and fitHeight would distort it:
sceneImage.setPreserveRatio(true);
// this provides a tiny bit of control over the scaling used:
sceneImage.setSmooth(true);

sceneImage.setImage(image);

【讨论】:

  • 非常感谢。
猜你喜欢
  • 2018-02-26
  • 2019-10-06
  • 2019-12-23
  • 2015-05-25
  • 2017-09-24
  • 2012-11-03
  • 1970-01-01
  • 2023-03-04
  • 2015-10-26
相关资源
最近更新 更多