Java FX – GUIs
TOPIC 05 – DRAWING ON A CANVAS

 

 

LESSON NOTE

 

 

The code below will show you how to draw basic shapes on a canvas.  All of the drawing is done inside the drawShapes method.  The drawing methods themselves belong to the GraphicsContext object gc which you can get from a Canvas object.

 

The code below will create the following:

 


Here's the code:

 

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.scene.shape.ArcType;

import javafx.stage.Stage;

 

public class BasicDrawing extends Application

{

    public static void main(String[] args)

    {

        launch(args);

    }

 

    public void start(Stage primaryStage)

    {

        primaryStage.setTitle("Basic Drawing");

        Group root = new Group();

        Canvas canvas = new Canvas(300, 250);

        GraphicsContext gc = canvas.getGraphicsContext2D();

        drawShapes(gc);

        root.getChildren().add(canvas);

        primaryStage.setScene(new Scene(root));

        primaryStage.show();

    }

 

    private void drawShapes(GraphicsContext gc)

    {

        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.fillArc(110, 110, 30, 30, 45, 240, ArcType.ROUND);

        gc.strokeArc(10, 160, 30, 30, 45, 240, ArcType.OPEN);

        gc.strokeArc(60, 160, 30, 30, 45, 240, ArcType.CHORD);

        gc.strokeArc(110, 160, 30, 30, 45, 240, ArcType.ROUND);

        gc.fillPolygon(new double[]{10, 40, 10, 40},new double[]{210, 210, 240, 240}, 4);

        gc.strokePolygon(new double[]{60, 90, 60, 90},new double[]{210, 210, 240, 240}, 4);

        gc.strokePolyline(new double[]{110, 140, 110, 140},new double[]{210, 210, 240, 240}, 4);

    }

}

Source: http://docs.oracle.com/javafx/2/canvas/jfxpub-canvas.htm