在窗口中,用户看到一个由一组正方形组成的字段。该字段是随机生成的。 (但没关系,只是夸耀了它的功能:DDDD)当用户滚动鼠标滚轮时,根据滚动方向,正方形应该增大或减小。因此,发生这种情况时,正方形不会更改其坐标,因此效果如第二张图片所示。它们之间形成缝隙!如何根据尺寸确定它们的位置?
如有必要,这是我的代码。不要介意。:DDD
scene.setOnScroll(e ->
{
if(e.getDeltaY() > 0)
{
camera.cameraControlScale(camera.cameraControlGetScaleX()+0.25,
camera.cameraControlGetScaleY()+0.25);
}
else
{
camera.cameraControlScale(camera.cameraControlGetScaleX()-0.25,
camera.cameraControlGetScaleY()-0.25);
}
});
protected void objectControlScale(double x, double y)
{
imageview.setScaleX(x);
imageview.setScaleY(y);
}
protected double objectControlGetScaleY()
{
return imageview.getScaleY();
}
protected double objectControlGetScaleX()
{
return imageview.getScaleX();
}
在这里,我将函数放在侦听器中。^ 函数的内容很简单,并且应该不起作用!:DDD 是的,我知道,我在此处使用的是功能图片,但这有什么区别?现场有图片,但为清楚起见,我将其删除。他们有完全相同的问题。 您不必费心编写代码,如果您在哪里知道如何阅读它,解决此类问题等,我将不胜感激。
Rectangle
/ ImageView
被直接添加到场景根:
Pane root = new Pane(... children ...);
答案 0 :(得分:1)
使用scaleX
和scaleY
应用的比例转换的枢轴点是节点的中心。此外,节点的位置不会自动更改。
假设您要缩放root
窗格的所有子项,将转换应用于Pane
本身是最简单的:
Pane realRoot = new Pane(root);
root.setScaleX(x);
root.setScaleY(y);
其他替代方法包括创建一个GridPane
并将每个Rectangle
/ ImageView
包裹在Group
中。
如果您想自己确定子节点的位置,并希望为每个子节点使用独立的比例因子,事情会变得更加复杂:所有更新之后,您都需要根据{ {1}}个属性...