[英]how to draw something on canvas javafx
我是javafx的初學者:我正在使用javafx和Scene Builder開發圖形用戶界面,該場景的坐標平面帶有x軸和y軸。 它應該是這樣的: https : //postimg.cc/image/98k9mvnb3/當某人在此坐標平面上的任意位置單擊鼠標時,它將在控制台上顯示像素的坐標點(x,y),並且會出現一個鼠標單擊同一位置上的標記(將寫入點或一些文本)。
為了實現這些功能,我必須使用canvas&我能夠獲得坐標點,但是我沒有獲得如何繪制坐標平面以及如何在鼠標單擊的像素上寫入內容的方法。
這是我的代碼:Controller Class軟件包應用程序;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.canvas.Canvas;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.AnchorPane;
public class AxisController implements Initializable{
@FXML
private AnchorPane anchr;
@FXML
private Canvas canvas;
@Override
public void initialize(URL location, ResourceBundle resources) {
assert canvas != null : "fx:id=\"canvas\" was not injected: check your FXML file 'AxisFxml.fxml'.";
}
@FXML
private void handleMouse(MouseEvent event){
System.out.println(event.getX());
System.out.println(event.getY());
}
}
主類:
package application;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
public class AxisMain extends Application {
@Override
public void start(Stage primaryStage) {
try {
AnchorPane root = FXMLLoader.load(getClass().getResource("/application/AxisFxml.fxml"));
Scene scene = new Scene(root,400,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
您是否嘗試過將諸如此類的代碼放入handleMouse方法中這樣簡單的事情?
GraphicsContext gc = canvas.getGraphicsContext2D();
gc.setFill(Color.BLUE);
gc.fillRect(event.getX()-5,event.getY()-5,10,10);
當然,這假定您也已將此方法附加到畫布上,以便您實際在正確的坐標系中獲取事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.