2016-12-12 6 views
0

아래 코드가 주어지면 하나의 이미지 (변수 '이미지'에 저장 됨)를 여러 번 인쇄하려고합니다. 이 일에 대해 어떻게 생각하는지에 대한 제안이 있습니까? 모든 정보가 유용 할 것입니다.JavaFX - imageview를 사용하여 한 이미지를 여러 번 인쇄하는 방법이 있습니까?

Image image = new Image("tileset.png"); 
    ImageView tileset = new ImageView(); 
    tileset.setImage(image); 

    Rectangle2D viewport1 = new Rectangle2D(0,16,16,16); //(selected pixels) 
    tileset.setViewport(viewport1); 
    int length = 40, width= 40; // declare size of array (print 40x40) 

    // loop through grid, fill every tile with image 'image'. 
    // currently only fills position (40,40) with the image. 
    for(int y = 0; y < length; y++) 
    { 
     for(int x = 0; x < width; x++) 
     { 
      GridPane.setConstraints(tileset,x,y); 
     } 
    } 


    root.getChildren().add(tileset); 
+0

당신은 루프를 생산하기 위해 포함해야하는 것과 같은 제안을 줄 수있는, 내가 어려움을 그렇게 보내고있어, 각각이 같은'Image' –

+0

사용하여 루프에서 여러'ImageView's 만들기 여러 ImageView의? ImageView 데이터 형식을 배열로 변환해야합니까? (또한, 팁을 주셔서 감사합니다, 적어도 나는이 시점에서 시작하는 어딘가에있다) – asdf

답변

2

gridpane하는 아이를 추가하지 않습니다 GridPane.setConstraints(tileset,x,y) 방법은, 그냥 자식 노드의 인덱스를 설정합니다. 그리드 판에 추가하려면 매번 을 루프에 넣고 새 ImageView을 호출해야합니다.

Image image = new Image("tileset.png"); 

Rectangle2D viewport1 = new Rectangle2D(0,16,16,16); //(selected pixels) 
int length = 40, width= 40; // declare size of array (print 40x40) 

// loop through grid, fill every tile with image 'image'. 
// currently only fills position (40,40) with the image. 
for(int y = 0; y < length; y++) 
{ 
    for(int x = 0; x < width; x++) 
    { 
     ImageView tileset = new ImageView(image); 
     tileset.setViewport(viewport1); 

     GridPane.setConstraints(tileset,x,y); 
     root.getChildren().add(tileset); 
    } 
}