gpt4 book ai didi

java - 如何放大 JavaFX 2 Canvas 节点?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:25:51 24 4
gpt4 key购买 nike

现在我正在为我的 canvas 节点获取 GraphicsContext 并尝试一个

gc.scale(2, 2);

在我的 canvas 上,我有几十种方法可用。所以我知道必须要放大一些东西。但是我的尝试没有产生明显的“增长”或“缩放”。我需要调用什么才能应用或重绘它吗?

最佳答案

我认为 gc.scale(2,2) 会将您在 Canvas 上绘制的下一个内容缩放为 2,而不是您已经绘制的现有内容。

如果你想缩放 Canvas ,你可以在 Canvas 上设置一个转换,而不是图形上下文。

canvas.setScaleX(2);
canvas.setScaleY(2);

如果您希望缩放的 Canvas 反射(reflect)在布局管理器的布局计算中,那么您可以将其包装在一个组中,如果您想在缩放的 Canvas 上产生类似缩放的效果,其中部分 Canvas 被剪裁,那么您可以将 Canvas 放在 ScrollPane 中并为其定义视口(viewport),或者在 Canvas 节点上设置剪辑。

更新以讨论像素化问题

为了避免放大时的像素化问题,我认为您需要记录迄今为止绘制的所有图形命令,然后当您想要更改缩放系数时,清除 Canvas ,应用新比例到 Canvas ,然后重播所有图形命令。也许可以使用 svg 之类的格式来记录图形命令。

或者您可以只使用场景图并绘制到场景图而不是 Canvas ,这样您也不会有像素化问题。

我认为这里需要注意的重要一点是 Canvas 应该是一种即时模式即发即忘的东西,而不是像场景图那样的保留模式绘图服务。

关于java - 如何放大 JavaFX 2 Canvas 节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12523033/

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