2017-12-14 9 views
0

무작위로 원, 사각형, 직사각형을 그리는 프로그램을 만들었습니다. 내 문제는 event.getX() 및 event.getY();캔버스에 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;