【发布时间】:2020-08-25 14:02:46
【问题描述】:
我正在尝试拍摄自定义窗格的快照(我将其放置在 BorderPane 的中心),但每次我得到的是一张空白的 PNG 图像。我用一个按钮尝试了相同的代码,它的快照被成功拍摄并保存。我检查了边界,我注意到窗格的边界具有最大值(父边界和本地边界):
[minX:-9.9999997952E10, minY:-9.9999997952E10, minZ:0.0, width:1.99999995904E11, height:1.99999995904E11, depth:0.0, maxX:9.9999997952E10, maxY:9.9999997952E10, maxZ:0.0]
我认为原因是窗格的布局设置为填充 BorderPane 的中心空间。我还在支持我怀疑的文档中找到了following:
窗格的最大宽度和高度没有限制,这向父级表明它可以调整到超出其首选大小以填充分配给它的任何空间。
这是拍摄快照的相关代码:
final WritableImage SNAPSHOT = mNodeToExport.snapshot(new SnapshotParameters(), null);
final File FILE = new File(mPathTextField.getText());
try {
ImageIO.write(SwingFXUtils.fromFXImage(SNAPSHOT, null), "png", FILE);
return FILE;
} catch (IOException exception) {
System.err.println("Error while exporting image of logicboard: " + exception.getMessage());
return null;
}
创建快照后的内容是: debugging image 我认为这很奇怪,因为它的宽度和高度值应该远大于 1。
我已经尝试拍摄我要导出的窗格的子节点的快照,它对于具有“非无限”边界的子节点工作正常,但对于具有“无限”的界限。
如果由于“无限”绑定值而未正确拍摄快照,我如何临时更改快照的窗格边界?如果边界不是问题,那么问题可能是什么?
【问题讨论】: