ril*_*l3y 7 java scale javafx-2
现在我抓住GraphicsContext我的canvas节点并尝试一个
gc.scale(2, 2);
Run Code Online (Sandbox Code Playgroud)
在我的canvas我有几十个可用的方法.所以我知道必须放大一些东西.然而,我的尝试没有产生明显的"增长"或"缩放".有什么我需要调用才能应用或重绘它?
我认为这gc.scale(2,2)会将您在画布上绘制的下一些内容缩放2倍,而不是已经绘制的现有内容.
如果要缩放画布,可以在画布上设置变换,而不是图形上下文.
canvas.setScaleX(2);
canvas.setScaleY(2);
Run Code Online (Sandbox Code Playgroud)
如果您希望缩放的画布反映在布局管理器的布局计算中,那么您可以将其包装在一个组中,如果您希望在缩放的画布上剪切部分画布的缩放效果,那么您可以放置ScrollPane中的画布并为其定义视口或在画布节点上设置剪辑.
更新以讨论像素化问题
为了避免放大时的像素化问题,我认为您需要记录迄今为止绘制的所有图形命令,然后当您想要更改缩放系数时,清除画布,将新比例应用于画布,然后重播所有图形命令.也许某些格式如svg可用于记录图形命令.
或者你可以使用场景图并绘制到那个而不是画布,那么你也不会有像素化问题.
我认为这里需要注意的重要一点是,画布应该是一种即时模式的火和忘记的东西,而不是像场景图这样的保留模式绘制服务.