【问题标题】:JavaFX "y" position on Canvas画布上的 JavaFX“y”位置
【发布时间】:2018-05-28 00:40:36
【问题描述】:

我创建了一个随机绘制圆形、正方形、矩形的程序。我的问题是我得到了 event.getX() 和 event.getY() 的点击位置;

问题来了:

绿点是我点击画布的地方。

↑→轴一定是这样的。但在我的程序中是这样的↓→

详情如下:

使用(扩展画布)获取鼠标位置:

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

初始化部分:

@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();

    }

我对 JavaFX 真的很陌生。我不明白为什么 y 轴在左上侧变小了。谢谢。

【问题讨论】:

    标签: java javafx javafx-8


    【解决方案1】:

    通常,坐标系的原点在屏幕的左上角,正y向下:
    . ---> +x
    |
    v +y
    您可以像这样转换您的y 位置以获得预期的移动(原点在左下角,+y 上升):

    y = canvas.getHeight() - y;
    

    【讨论】:

      猜你喜欢
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 2022-09-30
      • 2014-01-20
      相关资源
      最近更新 更多