滚动窗格放大Java

时间:2018-04-30 10:48:47

标签: java javafx graph zoom scrollpane

我在java中有一个滚动窗格,内容为锚定窗格,锚定窗口有子窗口,这是一个与锚定窗格高度和宽度绑定的图像视图,因此它可以精确地适合锚定窗格,还有一些圆圈和线条代表图形。如果我放大了锚定窗格的高度或宽度,那么滚动窗格t将自动滚动,使我能够像放大一样查看图像,但我想要做的是放大图片上的指定区域。 ,使圆和线基于缩放更改位置(可能使用绑定属性)。我试图实现的整个想法是将图片作为地图和图表来表示城市之间的链接,但同时我要放大某个路径并让它占据整个窗格并在滚动窗格之间导航放大。

AnchorPane other;
ImageView image;
ScrollPane scroll;
Button bp;
Button bm;
public void initialize(URL arg0, ResourceBundle arg1) {

    System.out.println("OK");
    Circle c = new Circle(250, 250, 10);
    Circle c2 = new Circle(20, 20, 10);
    Circle c3 = new Circle(40, 200, 10);
    c3.setFill(Color.RED);
    c3.setVisible(true);
    c2.setFill(Color.RED);
    Line line = new Line();
    Line line2 = new Line();
    Line line3 = new Line();
    line.setStartX(c.getCenterX());
    line.setStartY(c.getCenterY());
    line.setEndX(c2.getCenterX());
    line.setEndY(c2.getCenterY());
    line2.setStartX(c.getCenterX());
    line2.setStartY(c.getCenterY());
    line2.setEndX(c3.getCenterX());
    line2.setEndY(c3.getCenterY());
    line2.setVisible(true);
    line2.setStroke(Color.BLUE);
    line3.setStartX(c2.getCenterX());
    line3.setStartY(c2.getCenterY());
    line3.setEndX(c3.getCenterX());
    line3.setEndY(c3.getCenterY());
    line3.setVisible(true);
    line3.setStroke(Color.BLUE);
    line.setVisible(true);
    line.setStroke(Color.BLUE);
    c.setFill(Color.RED);
    c2.setVisible(true);
    c.setVisible(true);
    Rectangle rect = new Rectangle(100, 100, 70, 70);
    other.getChildren().addAll(line, line2, line3, c, c2, c3, rect);
    System.out.println(other.getChildren());
    image.setVisible(true);
    image.fitHeightProperty().bind(other.prefHeightProperty());
    image.fitWidthProperty().bind(other.prefWidthProperty());
    scroll.setPannable(true);
}

public void bpAction() {
    other.setPrefHeight(other.getPrefHeight() + 30);
    other.setPrefWidth(other.getPrefWidth() + 30);
}

public void bmAction() {
    other.setPrefHeight(other.getPrefHeight() - 30);
    other.setPrefWidth(other.getPrefWidth() - 30);
}

0 个答案:

没有答案