2016-03-22 16 views
0

Aşağıdaki testi uygulayın - camgöbeği dikdörtgen ortalanmış olarak görüntülenir. Amaçlanan sonuç bu. Ancak, görünümün minX ve minY değeri neden negatif değerler olmalı?JavaFX Düğüm Anlık Görüntü X/Y Parazitleri Olmalıdır Negatif Olmalı

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

cevap

0

burada alakalı koordinat sisteminin orijini (0,0) yani senin durumda dikdörtgenin sen anlık görüntü almak hangi düğümün, sol üst köşesidir. Şimdi dikdörtgen şeklindeki bir kenarlığı 15 raster birim genişliği ile istediğiniz gibi görünüyorsunuz. Dolayısıyla, anlık görüntüsünüzün -15, -15 konumunda başlaması ve 50 + 2 * 15 genişliğinde ve yüksekliğinde olması gerektiği açıktır.