2012-04-25 11 views
3

私はJavaFX 2.0で作業しているプロジェクトがあり、描画アプリケーションです。私は今までペンと、ペンサイズのスライダー、カラーピッカー、消しゴムと元に戻す機能を作成しました。私は、Rectangle、Circles、またはPolygonsのような基本的な図形を作成する方法はまだ分かりません。シェイプはカスタムディメンションを保持しなければならず、私はそれらをシーンに描画する必要があります。誰か助けてくれますか?JavaFX 2.0で幾何形状を作成する方法は?

本当に助けていただければ幸いです。

ありがとうございます!

答えて

3

APIドキュメント:javafx.scene.shape.Shapeをご覧ください。
サンプルの使用方法:Draw Rectangle。サークルとラインの例もそこに存在します。

+0

多分私は非常にはっきりと自分自身をexaplainしていない。カスタム四角形と円を作成する必要があります。おかげで –

+0

私は私のキャンバスにあることを意味します。私はマウスをドラッグし、長方形が作成されています! –

+0

もしあなたがペンで線を引くことができれば、マウスイベントを使って同じ方法でパス/線の代わりに 'Shape'を描くことができると私は思います。違いは、描画されたシェイプを削除し、マウスが離されるまでマウスの移動イベント中に新しいシェイプを再描画する必要があることです。 –

0

あなたがで描画したいコンポーネントのグラフィックコンポーネントを取得する必要があります

あなたがパネルを持っている場合、それはのようなものになります。

Graphics g = jPanel1.getGraphics(); 
Graphics2D g2d = (Graphics2D)g; 

のGraphics2Dはあなたのすべてのメソッドを提供していますあなたが探しているものを描く完了する方法オフリストについて は、Oracleのドキュメントを確認してください。

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

+0

私はJavaFXの2.0のために、ではないのJava SEのために何かを必要としています。とにかく答えてくれてありがとう。 –

+0

ああ申し訳ありません、私はちょうど混乱しました。しかし、私はあなたにoracleの本当に良いページを見つけました。そこでは、基本的な数字のやり方を説明していて、それはかなり簡単です。http://docs.oracle.com/javafx/1.3/howto/Shapes-Tutorial.html –

+0

はい、それはJavaFXですが、JavaFX 1.3です!私は2.0が必要です!ありがとう –

1
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); 

    } 

}

関連する問題