2012-04-25 4 views
3

나는 JavaFX 2.0에서 작업 중이며 그리기 응용 프로그램입니다. 지금까지 펜과 펜 크기 슬라이더, 색상 선택기, 지우개 및 실행 취소 기능을 만들었습니다. Rectangle, Circles 또는 Polygons와 같은 기본 도형을 만드는 방법을 아직 모르겠습니다. 셰이프는 사용자 지정 차원을 바꿔야하며이를 내 장면으로 그려야합니다. 누구든지 나를 도울 수 있습니까?JavaFX 2.0에서 기하학적 도형을 만드는 방법은 무엇입니까?

정말 도움이됩니다.

고마워요!

답변

3

확인 : javafx.scene.shape.Shape합니다.
샘플 사용 : Draw Rectangle. 원과 선 예제도 거기에 존재합니다.

+0

어쩌면 내가 아주 명확하게 자신을 exaplain 않았다. 사용자 정의 직사각형과 원을 만들어야합니다. 감사합니다 –

+0

나는 내 캔버스에 있음을 의미합니다. 마우스를 드래그하면 직사각형이 생성됩니다! –

+0

펜으로 선을 그릴 수 있다면 마우스 이벤트를 사용하여 같은 방식으로 경로/선 대신에 '모양'을 그릴 수 있다고 생각합니다. 차이점은 마우스를 놓을 때까지 마우스 이동 이벤트가 진행되는 동안 그려진 모양을 제거하고 새 모양을 다시 그려야한다는 것입니다. –

0

당신이 그릴 위치를 당신은 구성 요소의 그래픽 요소를 얻을해야합니다

을 당신이 같은 것 패널이있는 경우 :.

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

의 Graphics2D하는 모든 방법을 제공을 당신이 찾고있는 것을 그려야합니다. 완료 방법 오프 목록을 는 오라클에서 문서를 확인하십시오

http://docs.oracle.com/javase/7/docs/api/java/awt/Graphics2D.html

편집 : 혼란 JavaSE합니다. 자바 FX를 들어 당신이 어떻게 여기-에 조금 읽을 수는 API 문서 밖으로 http://docs.oracle.com/javafx/1.3/howto/Shapes-Tutorial.html

+0

나는하지 JavaSE를위한 자바 FX 2.0 뭔가가 필요합니다. 어쨌든 답변 해 주셔서 감사합니다. –

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

    } 

은}

관련 문제