我想在我的 JavaFx 2.x 场景中嵌入一个视频,并调整它的大小并将其重新定位到我的需要。我遇到的问题是。如果我构建一个MediaView
组件然后平移 X 或 Y 坐标,那么整个视图将被正确移动,如下所示:
MediaView mv = (...)
mv.setTranslateX(200);
mv.setTranslateY(200);
我可以使用缩放属性进行类似的转换:
MediaView mv = (...)
mv.setScaleX(2);
mv.setScaleY(2);
这将在维度上正确缩放 mv
实例两倍。
然而,问题是当我结合这两个翻译时。该mv
实例正在缩放,但它总是以屏幕坐标结束(0,0)
。从我的角度来看,这当然是不正确的行为。
我还尝试将我的MediaView
组件包装在某个包装器节点中,例如Group
并在此元素上执行翻译。行为是相同的。
如何同时正确移动和缩放MediaView
组件?
编辑:
这是我的代码,虽然我在这里使用ImageView
。然而,这无关紧要。运行此代码后,图像将被放置在(0,0)
而不是(100,100)
.
@Override
public void start(Stage stage) throws Exception {
Group root = new Group();
// Img's dimension is 200x200
javafx.scene.image.Image img = new javafx.scene.image.Image("/home/bachman/projects/cs-player/src/main/resources/content.png");
ImageView iv = new ImageView(img);
root.getChildren().add(iv);
// Move Image View
iv.setTranslateX(100);
iv.setTranslateY(100);
// Scale Image View
iv.setScaleX(2.0);
iv.setScaleY(2.0);
Scene scene = new Scene(root);
stage.setWidth(600);
stage.setHeight(600);
stage.setScene(scene);
stage.show();
}