2012-04-25 25 views
3

我有一个项目,我正在使用JavaFX 2.0,它是一个绘图应用程序。我迄今为止创建了一个笔,一个笔大小滑块,颜色选择器,橡皮擦和撤消功能。我还不知道如何创建像矩形,圆形或多边形等基本形状。这些形状必须具有自定义维度,我需要将它们绘制到我的场景中。谁能帮我吗?如何在JavaFX 2.0中创建几何形状?

我真的很感激任何帮助。

非常感谢!

回答

3

查看API文档:javafx.scene.shape.Shape
样本用法:Draw Rectangle。圆和线的例子也存在那里。

+0

也许我没有很清楚地表达自己。我需要建立自定义矩形和圆圈。谢谢 – 2012-04-25 12:34:44

+0

我的意思是我在我的画布上。我拖动鼠标,正在创建矩形! – 2012-04-25 12:59:09

+0

如果你能够用笔画线,那么你可以使用鼠标事件以同样的方式绘制一个'形状'而不是路径/线条,我想。不同的是,你应该删除绘制的形状,并重新绘制新的鼠标移动事件,直到鼠标被释放。 – 2012-04-25 13:09:31

0

您想在绘制如果你有一个面板它会像你需要获取组件的图形要素

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

+0

我需要的东西为JavaFX 2.0,而不是JavaSE中。无论如何要回答。 – 2012-04-25 12:22:59

+0

哦,对不起,我只是困惑。但是,我发现你还有一个非常好的页面,他们解释了如何做基本数字,它看起来非常简单:http://docs.oracle.com/javafx/1.3/howto/Shapes-Tutorial.html – 2012-04-25 19:26:02

+0

是,它是JavaFX,但是是JavaFX 1.3!我需要2.0!谢谢 – 2012-04-26 18:05:44

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

    } 

}