如何使用 scrollPane JavaFX 显示大于屏幕的图像
How to display an image larger than the screen using a scrollPane JavaFX
如何使用 scrollPane 在全屏应用程序中显示比屏幕大的图像?我有一个大约 8000x3800 像素的图像,我希望能够移动整个图像并与之交互而无需调整它的大小。如果您想了解我的代码的细节或一般情况,请询问。
public class SourceCodeVersion8 extends Application{
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
AnchorPane mapAnchorO = addMapAnchor();
Scene mapScene = new Scene(mapAnchorO);
primaryStage.setScene(mapScene);
primaryStage.setFullScreen(true);
primaryStage.setResizable(false);
primaryStage.show();
}
//Creates an AnchorPane for the map
private AnchorPane addMapAnchor()
{
AnchorPane mapAnchor = new AnchorPane();
ScrollPane mapScrollO = addMapScroll();
mapAnchor.getChildren().add(mapScrollO);
AnchorPane.setLeftAnchor(mapScrollO, 0.0);
AnchorPane.setTopAnchor(mapScrollO, 0.0);
return mapAnchor;
}
//Creates an ImageView for the map
private ImageView addMapView()
{
Image mapImage = new Image("WorldProvincialMap-v1.01.png");
ImageView mapView = new ImageView(mapImage);
return mapView;
}
//Creates a scrollPane for the map
private ScrollPane addMapScroll()
{
ScrollPane mapScroll = new ScrollPane();
ImageView mapViewO = addMapView();
mapScroll.setContent(mapViewO);
mapScroll.setPannable(true);
return mapScroll;
}
}
您只为 ScrollPane
设置了 4 个锚点中的 2 个,这就是为什么 ScrollPane
永远不会调整大小,只会调整到允许显示整个图像的大小。
因此不需要滚动条,也无法进行平移。
您也可以通过设置右侧和底部锚点来解决此问题。或者直接使用 ScrollPane
作为 Scene
的根。
private AnchorPane addMapAnchor() {
AnchorPane mapAnchor = new AnchorPane();
ScrollPane mapScrollO = addMapScroll();
mapAnchor.getChildren().add(mapScrollO);
AnchorPane.setLeftAnchor(mapScrollO, 0.0);
AnchorPane.setTopAnchor(mapScrollO, 0.0);
AnchorPane.setBottomAnchor(mapScrollO, 0.0);
AnchorPane.setRightAnchor(mapScrollO, 0.0);
return mapAnchor;
}
如何使用 scrollPane 在全屏应用程序中显示比屏幕大的图像?我有一个大约 8000x3800 像素的图像,我希望能够移动整个图像并与之交互而无需调整它的大小。如果您想了解我的代码的细节或一般情况,请询问。
public class SourceCodeVersion8 extends Application{
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
AnchorPane mapAnchorO = addMapAnchor();
Scene mapScene = new Scene(mapAnchorO);
primaryStage.setScene(mapScene);
primaryStage.setFullScreen(true);
primaryStage.setResizable(false);
primaryStage.show();
}
//Creates an AnchorPane for the map
private AnchorPane addMapAnchor()
{
AnchorPane mapAnchor = new AnchorPane();
ScrollPane mapScrollO = addMapScroll();
mapAnchor.getChildren().add(mapScrollO);
AnchorPane.setLeftAnchor(mapScrollO, 0.0);
AnchorPane.setTopAnchor(mapScrollO, 0.0);
return mapAnchor;
}
//Creates an ImageView for the map
private ImageView addMapView()
{
Image mapImage = new Image("WorldProvincialMap-v1.01.png");
ImageView mapView = new ImageView(mapImage);
return mapView;
}
//Creates a scrollPane for the map
private ScrollPane addMapScroll()
{
ScrollPane mapScroll = new ScrollPane();
ImageView mapViewO = addMapView();
mapScroll.setContent(mapViewO);
mapScroll.setPannable(true);
return mapScroll;
}
}
您只为 ScrollPane
设置了 4 个锚点中的 2 个,这就是为什么 ScrollPane
永远不会调整大小,只会调整到允许显示整个图像的大小。
因此不需要滚动条,也无法进行平移。
您也可以通过设置右侧和底部锚点来解决此问题。或者直接使用 ScrollPane
作为 Scene
的根。
private AnchorPane addMapAnchor() {
AnchorPane mapAnchor = new AnchorPane();
ScrollPane mapScrollO = addMapScroll();
mapAnchor.getChildren().add(mapScrollO);
AnchorPane.setLeftAnchor(mapScrollO, 0.0);
AnchorPane.setTopAnchor(mapScrollO, 0.0);
AnchorPane.setBottomAnchor(mapScrollO, 0.0);
AnchorPane.setRightAnchor(mapScrollO, 0.0);
return mapAnchor;
}