如何在javafx 2

时间:2015-05-05 13:35:32

标签: pdf javafx-2 zoom

我必须缩放ScrollPane内的pdf文件。 ScrollPane本身位于StackPane内部 在开始时,我缩放我的pdf以适应我的ScrollPane的宽度。因此,pdf-height不符合ScrollPanes的高度 我已经设法通过在使用鼠标滚轮时更改我的scaleFactor来进行缩放。不幸的是,我无法放大特定点 我想我必须根据鼠标坐标更改ScrollPanes值,但我找不到正确的计算。有人可以帮帮我吗?

例如我试过

scrollPane.setVvalue(e.getY() / scrollPane.getHeight())

使用这行代码,我的视图会向上或向下跳跃,具体取决于我是单击视口的上限还是下限。
我也明白它必须表现得那样,但我无法弄清楚必须添加/更改的内容。

我使用Jpedal来显示我的pdf

希望你明白我在寻找什么。 如果您需要更多信息,请告诉我。

修改:

这是我设法拖动的剪辑。

    eventRegion.addEventFilter(MouseEvent.MOUSE_PRESSED, e -> {
        dragStartX = e.getX();
        dragStartY = e.getY();
    });

    eventRegion.addEventFilter(MouseEvent.MOUSE_DRAGGED, e -> {                     
        double deltaX = dragStartX - e.getX();
        double deltaY = dragStartY - e.getY();

        scrollPane.setHvalue(Math.min(scrollPane.getHvalue() + deltaX / scrollPane.getWidth(), scrollPane.getHmax()));          
        scrollPane.setVvalue(Math.min(scrollPane.getVvalue() + deltaY / scrollPane.getHeight(), scrollPane.getVmax()));                 

        e.consume();
    });

我认为通过设置Hvalue和Vvalue可以以类似的方式缩放到鼠标位置。
我有什么想法可以计算这些值吗?

2 个答案:

答案 0 :(得分:1)

This example具有JavaFX 8代码,用于可缩放的ScrollPane缩放到鼠标指针,重置缩放并适合矩形的宽度,这可以是任何Node。请务必查看问题的答案,以使fitWidth()正常工作。我现在正在使用此解决方案ImageView,它很光​​滑。

答案 1 :(得分:1)

仅针对“缩放鼠标”的所有相关问题。

我遇到了同样的问题,我想出了以下代码片段。

library(dplyr)
Data_have %>% 
     group_by(ID) %>%
     transmute(Gender= first(na.omit(Gender_NA)))
#    ID Gender
#   (dbl) (fctr)
#1     1      m
#2     1      m
#3     1      m
#4     2      f
#5     2      f
#6     2      f
#7     3      m
#8     3      m
#9     3      m

基本思想是将基础窗格移动到缩放前的那个位置。重要的是,我们计算鼠标位置到窗格的局部坐标系。在比例之后,我们再做一次并计算差异。一旦我们知道了差异,我们就能够回到窗格。我认为这个解决方案非常简单直接。

我在JavaFX中的设置如下:我有一个javafx.scene.layout.BorderPane作为我的javafx.scene.Scene的root。在中心,我放了一个窗格。这将是我行动的窗格(即将其他节点放入..zoom,move..etc。)如果有人对我的实际操作感兴趣,请发邮件给我。

良好的编程!