gpt4 book ai didi

JavaFX "y"在 Canvas 上的位置

转载 作者:行者123 更新时间:2023-12-02 02:25:43 25 4
gpt4 key购买 nike

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

问题是这样的:

绿点是我单击 Canvas 的位置。

Problem on Y axis

↑→ 轴必须是这样的。但在我的程序中它是这样的↓→

详细信息如下:

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

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 轴在左上侧变小。谢谢。

最佳答案

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

y = canvas.getHeight() - y;

关于JavaFX "y"在 Canvas 上的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47804633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com