我需要在滚动窗格上放大/缩小相对于鼠标位置。JavaFx 8 - 相对于鼠标位置缩放/缩放ScrollPane
我目前通过将我的内容封装在一个组中并缩放组本身来实现缩放功能。我使用自定义透视创建了一个新的Scale对象。 (数据透视设置为鼠标位置)
这适用于组初始缩放比例为1.0的情况,然而缩放后的缩放比例并未按照正确的方向缩放 - 我相信这是因为当组具有相对鼠标位置时被缩放。
我的代码:
@Override
public void initialize(URL location, ResourceBundle resources) {
Delta initial_mouse_pos = new Delta();
anchorpane.setOnScrollStarted(event -> {
initial_mouse_pos.x = event.getX();
initial_mouse_pos.y = event.getY();
});
anchorpane.setOnScroll(event -> {
double zoom_fac = 1.05;
double delta_y = event.getDeltaY();
if(delta_y < 0) {
zoom_fac = 2.0 - zoom_fac;
}
Scale newScale = new Scale();
newScale.setPivotX(initial_mouse_pos.x);
newScale.setPivotY(initial_mouse_pos.y);
newScale.setX(content_group.getScaleX() * zoom_fac);
newScale.setY(content_group.getScaleY() * zoom_fac);
content_group.getTransforms().add(newScale);
event.consume();
});
}
private class Delta { double x, y; }
我如何获得不同级别的缩放的正确鼠标的位置?是否有一种完全不同的缩放ScrollPane的方法更容易?
这里是[I使用的代码(http://stackoverflow.com/questions/29788184/javafx-8-dynamic-node-scaling)进行动态节点缩放。 – RonSiven