代码之家  ›  专栏  ›  技术社区  ›  Robert

从AnchorPane获取可见元素

  •  0
  • Robert  · 技术社区  · 7 年前

    我正在开发一个JavaFX应用程序,用户可以在其中缩放和拖动元素(所有元素都包含在锚具中)。其中一些元素是简单的线,我需要一个像尺子一样的东西,它有不同的父元素,即使用户缩放或拖动提到的锚具,也可以将其粘贴在屏幕上的相同位置。我几乎所有的东西都在工作,但我有一个问题,我需要知道用户可以看到来自锚网的哪些线(就像用户缩放和拖动锚网一样,一些线不再可见)。以下是我尝试的(不起作用…)

    private List<Double> getVisibleVerticalLinesXCoordonate() {
    
            List<Double> xCoordonatesOfVisibleVerticalLines = new ArrayList<>();
            List<Node> visibleNodes = new ArrayList<>();
            Bounds bounds = rulerParent.getBoundsInLocal();
            Bounds paneBounds = rulerParent.localToScene(bounds);
            for (Node n : gridVerticalLines) {
                Bounds nodeBounds = n.getBoundsInParent();
                if (paneBounds.intersects(nodeBounds)) {
                    visibleNodes.add(n);
                }
            }
    
            for (Node node : visibleNodes) {
                Bounds newBounds = getRelative(node);
                xCoordonatesOfVisibleVerticalLines.add(newBounds.getMinX());
            }
            System.out.println(Arrays.asList(xCoordonatesOfVisibleVerticalLines));
            return xCoordonatesOfVisibleVerticalLines;
        }
    
    private Bounds getRelative(Node node) {
            return rulerParent.sceneToLocal(node.localToScene(node.getBoundsInLocal()));
        }
    

    rulerParent 问题是,这并没有返回实际的可见线。。。

    我不需要看到整条线就认为它是可见的,这就是为什么我使用intersect。。。如果一条线的任何部分可见,我需要它。

    1 回复  |  直到 7 年前
        1
  •  -1
  •   Ahmed Emad    7 年前

    这是关于如何处理缩放和拖动操作 ViewPort 视口 你可以知道物体的平移X和Y坐标 视口 这是物体的可见X和Y坐标 AnchorPane

    推荐文章