0
我正在使用JavaFX構建繪圖程序。我試圖用GraphicsContext繪製一個Rectangle,並設法讓它在畫布上繪製。但是,無論我點擊什麼,它總是從原點開始。當我釋放鼠標(這是正確完成的)時,矩形會停止繪製,但當按下鼠標時不會繪製該矩形。這裏是我的代碼:如何將JavaFX上繪製的矩形的原點更改爲我點擊鼠標的位置?
public RectController(Canvas c, Scene s, BorderPane borderPane){
this.borderPane = borderPane;
this.scene = scene;
this.graphicsContext = canvas.getGraphicsContext2D();
rectangle = new Rectangle();
rectangle.setStrokeWidth(1.0);
rectangle.setManaged(true);
rectangle.setMouseTransparent(true);
//when you first press down on the mouse
pressMouse = event -> {
// borderPane.getChildren().add(rectangle); --> REMOVED
double startX = event.getX();
double startY = event.getY();
};
releaseMouse = event -> {
borderPane.getChildren().remove(rectangle);
double width = Math.abs(event.getX() - startX);
double height = Math.abs(event.getY() - startY);
graphicsContext.strokeRect(startX, startY, width, height);
borderPane.setOnMousePressed(null);
borderPane.setOnMouseDragged(null);
borderPane.setOnMouseReleased(null);
};
dragMouse = event -> {
rectangle.setWidth(event.getX());
rectangle.setHeight(event.getY());
};
}
任何幫助將不勝感激。
也許你應該先獲取鼠標的x和y位置或事件的x和y位置。然後使用這些值來知道在哪裏創建矩形。您應該在鼠標點擊處理程序中創建一個新的Rectangle。另外,在你的代碼中,我沒有看到你設置矩形的位置。 – Sedrick
您好@SedrickJefferson,我在這裏設置位置:'graphicsContext.strokeRect(startX,startY,width,height);'?或者這是不正確的做法嗎? – xn139
請勿使用邊框窗格。邊框窗格是一個佈局窗格,用於管理其子節點的佈局;你應該把矩形放在一個普通的「窗格」中。 –