我需要在滾動窗格上放大/縮小相對於鼠標位置。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