0

我使用以下代码生成节点的图像并将其与 ImageView 一起添加到我的场景中:

SnapshotParameters snapParams = new SnapshotParameters();
snapParams.setFill(Color.TRANSPARENT);
this.dragImage = new ImageView(draggable.snapshot(snapParams, null));

...

frontPane.getChildren().add(this.dragImage);
Bounds localBounds = frontPane.sceneToLocal(draggable
    .localToScene(draggable.getBoundsInLocal()));
this.dragImage.relocate(localBounds.getMinX(),
localBounds.getMinY());

不幸的是,从我的屏幕截图中可以看出,渲染的图像非常模糊。任何可能存在问题或如何检索未模糊图像的想法都将受到欢迎。

更新:

在玩耍时我删除了

this.dragImage.relocate(localBounds.getMinX(),localBounds.getMinY());

这会产生一个清晰的图像,完全没有模糊。我不知道为什么会这样,我仍然需要将图像翻译到正确的位置。

模糊的快照

4

1 回答 1

1

我在 relocate 调用中通过简单的转换为 int 消除了模糊:

this.dragImage.relocate((int) localBounds.getMinX(),(int) localBounds.getMinY());

我发现localBounds.getMinX()是 638.5 和localBounds.getMinY()136.5。进一步的实验使我得出结论,平移的非整数值导致图像模糊。

对此的解释可以在“与坐标系交互”的Shape的 API 文档中找到。

于 2012-11-01T13:32:37.390 回答