2017-12-14 8 views
0

円、四角、矩形をランダムに描画するプログラムを作成しました。私の問題は、event.getX()とevent.getY()でクリック位置を取得していることです。CanvasのJavaFX "y"ポジション

ここに問題があります:

グリーンポイントはキャンバスをクリックする場所です。

Problem on Y axis

↑→軸はこのようでなければなりません。 (キャンバスを拡張)と

取得マウス位置:しかし、私のプログラムではこのように立つ↓→

ここでは詳細である

@Override 
    public void start(Stage primaryStage) { 
     this.color = Color.BLACK; 
     toggleGroup = new ToggleGroup(); 
     hBox = new HBox(); 
     vBox = new VBox(); 
     label = new Label(); 

     vBox.setPadding(new Insets(5,15,0,15)); 
     vBox.setSpacing(10); 
     hBox.setPadding(new Insets(5,0,0,0)); 




     //Radio Buttons 
     red = new RadioButton("Red"); 
     red.setSelected(true); 
     green = new RadioButton("Green"); 
     blue = new RadioButton("Blue"); 

     red.setToggleGroup(toggleGroup); 
     green.setToggleGroup(toggleGroup); 
     blue.setToggleGroup(toggleGroup); 



     //Buttons 
     buttonCircle = new Button("Circle"); 
     buttonCircle.setMinSize(70,20); 
     buttonCircle.setOnMouseClicked(event -> circleButtonClicked()); 

     buttonSquare = new Button("Square"); 
     buttonSquare.setMinSize(70,20); 
     buttonSquare.setOnMouseClicked(event -> squareButtonClicked()); 

     buttonRectangle = new Button("Rectangle"); 
     buttonRectangle.setMinSize(70,20); 
     buttonRectangle.setOnMouseClicked(event -> rectangleButtonClicked()); 

     cleanAll = new Button("Clean All"); 
     cleanAll.setMinSize(70,20); 
     cleanAll.setOnMouseClicked(event -> cleanAllEvent()); 


     figureCanvas = new FigureCanvas(10,400,500, this); 
     vBox.getChildren().addAll(red,green,blue,buttonCircle,buttonSquare,buttonRectangle,cleanAll,label); 
     hBox.getChildren().addAll(vBox,figureCanvas); 


     Scene scene = new Scene(hBox,500,500); 

     primaryStage.setScene(scene); 
     primaryStage.setTitle("Draw Figure"); 
     primaryStage.show(); 

    } 

I:一部の初期化

super.setOnMouseClicked(event -> selectFigureContaining(event.getX(),event.getY())); 

JavaFXの新機能です私はなぜy軸が左上側で小さくなっているのか理解できませんでした。ありがとう。

答えて

2

通常、座標系の原点は画面の左上にあり、正の値はyです。
です。 ---> + x
|あなたはこのようなあなたのy位置を変換することができ
V + yの
が動き期待を取得する(一番下の原点は左に、+ yが上がる):

y = canvas.getHeight() - y;