2016-03-22 2 views
0

Выполните тест ниже - голубой прямоугольник отображается с центром. Это намеченный результат. Однако почему minX и minY окна просмотра должны быть отрицательными?JavaFX Node Snapshot X/Y Params должны быть отрицательными

public class NodeScreenshotTest extends Application 
{ 
    public static void main(String[] args) 
    { 
    Application.launch(args); 
    } 

    @Override 
    public void start(Stage stage) 
    { 
    stage.setScene(new Scene(createContent())); 
    stage.getScene().setFill(Color.BEIGE); 
    stage.setTitle(getClass().getSimpleName()); 
    stage.show(); 
    } 

    private Parent createContent() 
    { 
    BorderPane content = new BorderPane(); 
    Rectangle rectangle = new Rectangle(50, 50); 
    rectangle.setFill(Color.AQUA);  
    SnapshotParameters params = new SnapshotParameters(); 
    params.setFill(Color.YELLOW); 
    // Viewport x/y negative??? 
    params.setViewport(new Rectangle2D(-15, -15, 80, 80)); 
    ImageView iv = new ImageView(rectangle.snapshot(params, null)); 
    content.setCenter(iv); 
    return content; 
    } 
} 

ответ

0

Происхождение (0,0) в соответствующей системе координат здесь является верхним левым углом узла, для которого вы берете снимок, то есть прямоугольник в вашем случае. Теперь вам, кажется, нужна граница вокруг вашего прямоугольника шириной 15 растровых единиц. Поэтому ясно, что ваш снимок должен начинаться с местоположения -15, -15 и должен иметь ширину и высоту 50 + 2 * 15.