gpt4 book ai didi

javafx - 如何保存 JavaFX Canvas 的高 DPI 快照

转载 作者:行者123 更新时间:2023-12-03 18:42:18 25 4
gpt4 key购买 nike

我在 Canvas 上创建了一个图像,该图像被缩小以使用转换进行显示。它也在 ScrollPane 中,这意味着只有图像的一部分可见。

我需要拍摄整个 Canvas 的快照并将其保存为高分辨率图像。当我使用 Canvas.snapshot 时,我在缩小后得到图像可见部分的可写图像。这会导致保存低分辨率的部分图像。

那么我该如何创建一个包含整个 Canvas (不仅是滚动 Pane 的视口(viewport))以及向下转换之前的分辨率的快照?

我目前没有做任何花哨的事情,只是这样:

public WritableImage getPackageCanvasSnapshot()
{
SnapshotParameters param = new SnapshotParameters();
param.setDepthBuffer(true);
return packageCanvas.snapshot(param, null);
}

最佳答案

我执行以下操作以在像素缩放因子为 2.0 的 Retina 显示器上获取 Canvas 快照。它对我有用。

public static WritableImage pixelScaleAwareCanvasSnapshot(Canvas canvas, double pixelScale) {
WritableImage writableImage = new WritableImage((int)Math.rint(pixelScale*canvas.getWidth()), (int)Math.rint(pixelScale*canvas.getHeight()));
SnapshotParameters spa = new SnapshotParameters();
spa.setTransform(Transform.scale(pixelScale, pixelScale));
return canvas.snapshot(spa, writableImage);
}

关于javafx - 如何保存 JavaFX Canvas 的高 DPI 快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32288411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com