Friday, April 5, 2013

JavaFX: draw on Canvas

Simple example to draw something on JavaFX 2 Canvas:

draw on JavaFX 2 Canvas
draw on JavaFX 2 Canvas


package javafx_drawoncanvas;

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

/**
 * @web http://java-buddy.blogspot.com/
 */
public class JavaFX_DrawOnCanvas extends Application {
    
    @Override
    public void start(Stage primaryStage) {

        Canvas canvas = new Canvas(300, 250);
        GraphicsContext graphicsContext = canvas.getGraphicsContext2D();
        
        drawSomething(graphicsContext);
        
        StackPane root = new StackPane();
        root.getChildren().add(canvas);
        Scene scene = new Scene(root, 300, 250);
        primaryStage.setTitle("java-buddy.blogspot.com");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
    
    private void drawSomething(GraphicsContext gc){
        double canvasWidth = gc.getCanvas().getWidth();
        double canvasHeight = gc.getCanvas().getHeight();
        
        gc.setFill(Color.RED);
        gc.setStroke(Color.BLUE);
        gc.setLineWidth(3);

        gc.fillRect(
                canvasWidth/4,      //x of the upper left corner
                canvasHeight/4,     //y of the upper left corner
                canvasWidth/2,      //width of the rectangle
                canvasHeight/2);    //height of the rectangle
        
        gc.strokeOval(
                canvasWidth/2,      //x of the upper left bound of the oval
                canvasHeight/2,     //y of the upper left bound of the oval
                canvasWidth/2,      //width at the center of the oval
                canvasHeight/2);    //height at the center of the oval
        
    }
    
}


1 comment: