2016-03-29 17 views
1

Bir ScrollPane içinde bir ImageView var. ScrollPane'e bir dinleyici ekleyerek fare tıklaması olayını alabilirim. Bununla birlikte, tıklanan görüntüdeki pikselin x ve y koordinatlarını almak istiyorum.JavaFX: Bir ImageView üzerinde tıklatılmış x ve y piksel koordinatlarını alın

Bunu daha da karmaşık hale getirmek için, görüntü yakınlaştırılıp uzaklaştırılabilir, ancak bir kez ne yaptığım hakkında bir fikrim olduğunda bunu anlayabiliyorum.

+0

Eğer getSceneX veya getScreenX veya GetX denedin mi: İşte

basit bir örnek? Senden naber? – matt

+0

Bunlar her ikisi de görüntüyü değil ekranda x alır. –

cevap

4

Fare dinleyicisini ScrollPane yerine ImageView'a ekleyin.

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.ScrollPane; 
import javafx.scene.image.ImageView; 
import javafx.stage.Stage; 

public class ClickOnScrollingImage extends Application { 

    private static final String IMAGE_URL = "https://www.nasa.gov/sites/default/files/styles/full_width_feature/public/thumbnails/image/crop_p_color2_enhanced_release_small.png?itok=5BtHNey_" ; 


    @Override 
    public void start(Stage primaryStage) { 
     ScrollPane scroller = new ScrollPane(); 
     ImageView imageView = new ImageView(IMAGE_URL); 
     scroller.setContent(imageView); 

     // the following line allows detection of clicks on transparent 
     // parts of the image: 
     imageView.setPickOnBounds(true); 

     imageView.setOnMouseClicked(e -> { 
      System.out.println("["+e.getX()+", "+e.getY()+"]"); 
     }); 
     Scene scene = new Scene(scroller, 600, 600); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 
+0

Fare dinleyicileri ImageViews'ta çalışmıyor. ScrollPane'a eklemem ve getTarget() 'ın ImageView olup olmadığını kontrol etmeliyim. –

+1

Elbette yaparlar. Çalışmıyorsa kodunuzu gönderin. –

+0

Gerçekten de farklı bir görüntü ile çalışıyor. Görüntüdeki saydam pikseller etkinliği çalışmayı durdurdu. –

İlgili konular