2016-03-22 9 views
0

Führen Sie den folgenden Test aus - das cyanfarbene Rechteck wird zentriert angezeigt. Das ist das beabsichtigte Ergebnis. Warum müssen jedoch minX und minY des Viewports negative Werte sein? JavaFX-Knoten-Snapshot X/Y-Parameter müssen negativ sein

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; 
    } 
} 

Antwort

0

Der Ursprung (0,0) des betreffenden Koordinatensystem hier ist die obere linke Ecke des Knotens für die Sie den Snapshot erstellen, das heißt das Rechteck in Ihrem Fall. Jetzt scheinen Sie eine Grenze um Ihr Rechteck mit einer Breite von 15 Rastereinheiten zu haben. Es ist also klar, dass Ihr Schnappschuss an der Position -15, -15 beginnen muss und eine Breite und Höhe von 50 + 2 * 15 haben muss.