Imprimir

Screen Shot 2017 01 11 at 21.54.03

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class BasicGraphicsJavaFX extends Application {
    
    @Override
    public void start(Stage primaryStage) {
       
        /* CREACIÓN DE LA VENTANA Y DE LOS CONTENEDORES PRINCIPALES */
        
        // Contenedor principal donde se alojarán todos los elementos
        Group root = new Group();  
        // Creación de una zona de dibujo (canvas) de 200 x 150 puntos
        Canvas canvas = new Canvas(200, 150);
        // Obtención del contexto gráfico del canvas anterior que permitirá
        //  realizar posteriormente los dibujos
        GraphicsContext gc = canvas.getGraphicsContext2D();
        // Se añade el canvas al contenedor principal (root)
        root.getChildren().add(canvas);
        // Creación del área (scene) correspondiente al contenido que tendrá la 
        //  ventana, de 600 x 400 puntos, con color gris claro, indicando que el
        //  elemento root va a ser el contenedor principal de este espacio
        Scene scene = new Scene(root, 600, 400, Color.LIGHTGRAY);
        // Se asocia la ventana (scene) al parámetro primaryStage (escenario
        //  principal). El parámetro primaryStage se recibe en este método start
        primaryStage.setScene(scene);
        // Título que se aparecerá en la ventana
        primaryStage.setTitle("Dibujando formas con JavaFX");
        // Orden para que se muestre la ventana        
        primaryStage.show();

        /* DIBUJO DE LAS FORMAS */
        
        /* Se utiliza el objeto gc (GraphicsContext) que se ha obtenido
            anteriormente a partir del canvas de se ha creado */
        
        // Dibujo de un rectángulo vacío (strokeRect) que va a ocupar todo
        //  el espacio del canvas
        gc.strokeRect(0, 0, canvas.getWidth(), canvas.getHeight());
        // Cambiar a partir de este momento el color de las líneas a azul
        gc.setStroke(Color.BLUE);
        // Cambiar a partir de este momento el grosor de las líneas a 5 puntos
        gc.setLineWidth(5);
        // Dibujar una línea desde la posición (40,10) a (10,40)
        gc.strokeLine(40, 10, 10, 40);
        // Cambiar a partir de este momento el color de relleno a verde
        gc.setFill(Color.GREEN);
        // Dibujar un círculo a partir de la posición (10,60) de ancho 30 y alto 30
        gc.fillOval(10, 60, 30, 30);
        // Dibujar un círculo sin relleno
        gc.strokeOval(60, 60, 30, 30);
        // Dibujar un rectángulo con bordes redondeados a partir de la posición
        //  (110,60) de ancho 30, alto 30, radio de bordes con ancho 10 y alto 10 
        gc.fillRoundRect(110, 60, 30, 30, 10, 10);
        // Dibujar un rectángulo vacio
        gc.strokeRoundRect(160, 60, 30, 30, 10, 10);
        
        /* MÁS INFORMACIÓN
        
        En la API de JavaFX de la clase GraphicsContext se puede encontrar 
            más información sobre las distintas formas que se pueden dibujar
            http://docs.oracle.com/javase/8/javafx/api/javafx/scene/canvas/GraphicsContext.html
        
        Más información también en el artículo "Working with Canvas":
            http://docs.oracle.com/javafx/2/canvas/jfxpub-canvas.htm
        */
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
    
}