Translate位移

  • 创建位移量Translate translate = new Translate(100, 100);

  • xy位移取相反数translate.createInverse()

  • 在该位移基础上再位移,转换为point2D

    Point2D point2D = translate.transform(50, 50);  
    System.out.printf("point2D(%.2f,%.2f)\n", point2D.getX(), point2D.getY());
    

    point2D(150.00,150.00)

  • 通过传入的数据,直接转换为point2D

    Point2D point2D1 = translate.deltaTransform(100, 100);  
    System.out.printf("point2D1(%.2f,%.2f)\n", point2D1.getX(), point2D1.getY());
    

    point2D1(100.00,100.00)

  • 位移会叠加,位移原点(LayoutX,LayoutY)

    button2.getTransforms().addAll(translate, translate1);
    
  • 获取偏移量

    button2.setOnAction(event -> {  
        // 获取组件相对与父组件的位移量,输出的结果是变换后的
        System.out.printf("相对于父组件的坐标:(%.2f,%.2f)\n", button2.getLocalToParentTransform().getTx(), button2.getLocalToParentTransform().getTy());  
        // 获取组件相对与场景的位移量  
        System.out.printf("相对于场景的坐标:(%.2f,%.2f)\n", button2.getLocalToSceneTransform().getTx(), button2.getLocalToSceneTransform().getTy());  
        Bounds bounds = button2.getLayoutBounds();  
        Bounds localToParent = button2.localToParent(bounds);  
        System.out.printf("相对于父组件的坐标:(%.2f,%.2f)\n", localToParent.getMinX(), localToParent.getMinY());  
        Bounds localToScreen = button2.localToScreen(bounds);  
        System.out.printf("相对于屏幕的坐标:(%.2f,%.2f)\n", localToScreen.getMinX(), localToScreen.getMinY());  
    });
    

    相对于父组件的坐标:(300.00,300.00) 相对于场景的坐标:(400.00,400.00) 相对于父组件的坐标:(300.00,300.00) 相对于屏幕的坐标:(1444.00,520.00)