3

JavaFX 2.0 に取り組んでいるプロジェクトがあり、それは描画アプリケーションです。これまでのところ、ペン、ペン サイズ スライダー、カラー ピッカー、消しゴム、元に戻す機能を作成しました。長方形、円、多角形などの基本的な形状を作成する方法はまだわかりません。シェイプにはカスタム ディメンションが必要で、シーンに描画する必要があります。誰でも私を助けることができますか?

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

どうもありがとう!

4

3 に答える 3

3

API ドキュメントを確認してください: javafx.scene.shape.Shape
使用例: Draw Rectangle。円と線の例もそこにあります。

于 2012-04-25T12:32:37.143 に答える
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);

     }

}

于 2013-11-24T17:47:21.633 に答える
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

于 2012-04-25T12:12:39.063 に答える