Javafx 缩放时剪切图像

Javafx 缩放时剪切图像,javafx,zooming,scrollpane,Javafx,Zooming,Scrollpane,我在缩放大图像时遇到问题。当我将图像缩放到更大的范围并移动图像(平移功能)时,我会丢失一张图像(如剪切)。我的代码哪里有错误 private void zoom(ImageView imagePannable) { imagePannable.setOnScroll( new EventHandler<ScrollEvent>() { @Override public void handle(ScrollEvent ev

我在缩放大图像时遇到问题。当我将图像缩放到更大的范围并移动图像(平移功能)时,我会丢失一张图像(如剪切)。我的代码哪里有错误

private void zoom(ImageView imagePannable) {
    imagePannable.setOnScroll(
            new EventHandler<ScrollEvent>() {
        @Override
        public void handle(ScrollEvent event) {
            double zoomFactor = 1.20;
            double deltaY = event.getDeltaY();

            if (deltaY < 0) {
                zoomFactor = 0.80;
            }
            else
                zoomFactor = 1.20;

            imagePannable.setFitHeight(imagePannable.getFitHeight() * zoomFactor);
            imagePannable.setFitWidth(imagePannable.getFitWidth() * zoomFactor);

            event.consume();
       }
    });
}

看看这个问题,看看是否有任何答案是有用的:我无法重现这个问题,但有些事情很奇怪:在初始化过程中,即在第一次布局通过之前,您似乎设置了初始
fitWidth
。此时,
viewportBouns
的大小应为0 x 0。此外,您正在使用一些计算来计算您希望图像适合的大小,这将导致与视口边界完全相同的大小,所以为什么不直接使用这些值呢?
double propX = viewportBounds.getWidth() / image.getWidth();
double propY = viewportBounds.getHeight() / image.getHeight();

imageView.setFitWidth(imageView.getImage().getWidth() * propX);
imageView.setFitHeight(imageView.getImage().getHeight() * propY);


scrollPane.setContent(imageView);

scrollPane.setPannable(true);
// center the scroll contents.
scrollPane.setHvalue(0.5);
scrollPane.setVvalue(0.5);

zoom(imageView);