我有一個項目,我正在使用JavaFX 2.0,它是一個繪圖應用程序。我迄今爲止創建了一個筆,一個筆大小滑塊,顏色選擇器,橡皮擦和撤消功能。我還不知道如何創建像矩形,圓形或多邊形等基本形狀。這些形狀必須具有自定義維度,我需要將它們繪製到我的場景中。誰能幫我嗎?如何在JavaFX 2.0中創建幾何形狀?
我真的很感激任何幫助。
非常感謝!
我有一個項目,我正在使用JavaFX 2.0,它是一個繪圖應用程序。我迄今爲止創建了一個筆,一個筆大小滑塊,顏色選擇器,橡皮擦和撤消功能。我還不知道如何創建像矩形,圓形或多邊形等基本形狀。這些形狀必須具有自定義維度,我需要將它們繪製到我的場景中。誰能幫我嗎?如何在JavaFX 2.0中創建幾何形狀?
我真的很感激任何幫助。
非常感謝!
查看API文檔:javafx.scene.shape.Shape。
樣本用法:Draw Rectangle。圓和線的例子也存在那裏。
您想在繪製如果你有一個面板它會像你需要獲取組件的圖形要素
:
Graphics g = jPanel1.getGraphics();
Graphics2D g2d = (Graphics2D)g;
的Graphics2D爲您提供的所有方法。繪製你正在尋找的東西。 有關列表關閉完成方法檢查文檔在甲骨文:
http://docs.oracle.com/javase/7/docs/api/java/awt/Graphics2D.html
編輯:困惑的JavaSE。對於JavaFX,您可以在這裏閱讀一些如何操作: http://docs.oracle.com/javafx/1.3/howto/Shapes-Tutorial.html
我需要的東西爲JavaFX 2.0,而不是JavaSE中。無論如何要回答。 – 2012-04-25 12:22:59
哦,對不起,我只是困惑。但是,我發現你還有一個非常好的頁面,他們解釋瞭如何做基本數字,它看起來非常簡單:http://docs.oracle.com/javafx/1.3/howto/Shapes-Tutorial.html – 2012-04-25 19:26:02
是,它是JavaFX,但是是JavaFX 1.3!我需要2.0!謝謝 – 2012-04-26 18:05:44
public class MyCanvas extends Application {
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle(MyCanvas.class.getSimpleName());
Group root = new Group();
final Canvas canvas = new Canvas(300, 250);
GraphicsContext gc = canvas.getGraphicsContext2D();
drawShapes(gc);
final Text text = new Text("X = Y = ");
text.setTranslateX(100);
text.setTranslateY(40);
text.setFont(new Font(20));
canvas.setOnMouseMoved(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent t) {
text.setText("X = " + t.getX() + " Y = " + t.getY());
}
});
root.getChildren().addAll(canvas, text);
primaryStage.setScene(new Scene(root));
primaryStage.getScene().setFill(Color.AQUA);
primaryStage.show();
}
/**
* The main() method is ignored in correctly deployed JavaFX application.
* main() serves only as fallback in case the application can not be
* launched through deployment artifacts, e.g., in IDEs with limited FX
* support. NetBeans ignores main().
*
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
private void drawShapes(GraphicsContext gc) {
gc.setFill(Color.WHITESMOKE);
gc.fillRect(gc.getCanvas().getLayoutX(),
gc.getCanvas().getLayoutY(),
gc.getCanvas().getWidth(),
gc.getCanvas().getHeight());
gc.setFill(Color.GREEN);
gc.setStroke(Color.BLUE);
gc.setLineWidth(5);
gc.strokeLine(40, 10, 10, 40);
gc.fillOval(10, 60, 30, 30);
gc.strokeOval(60, 60, 30, 30);
gc.fillRoundRect(110, 60, 30, 30, 10, 10);
gc.strokeRoundRect(160, 60, 30, 30, 10, 10);
gc.fillArc(10, 110, 30, 30, 45, 240, ArcType.OPEN);
gc.fillArc(60, 110, 30, 30, 45, 240, ArcType.CHORD);
gc.strokeArc(10, 160, 30, 30, 45, 240, ArcType.OPEN);
}
}
也許我沒有很清楚地表達自己。我需要建立自定義矩形和圓圈。謝謝 – 2012-04-25 12:34:44
我的意思是我在我的畫布上。我拖動鼠標,正在創建矩形! – 2012-04-25 12:59:09
如果你能夠用筆畫線,那麼你可以使用鼠標事件以同樣的方式繪製一個'形狀'而不是路徑/線條,我想。不同的是,你應該刪除繪製的形狀,並重新繪製新的鼠標移動事件,直到鼠標被釋放。 – 2012-04-25 13:09:31