Canvas2D allows you to easily manipulate pixel arrays
//Creating the canvas
Canvas2D canvas = new Canvas2D(800, 600, Color.white);
canvas.setStrokeColor(Color.black);
//Drawing a point
canvas.setRGB(10, 10, Color.red);
//Drawing lines
canvas.drawLine(new Point(40, 35), new Point(40, 125));
canvas.drawLine(new Point(160, 35), new Point(160, 125));
canvas.drawLine(new Point(30, 175), new Point(30, 150));
canvas.drawLine(new Point(30, 150), new Point(170, 175));
canvas.drawLine(new Point(30, 175), new Point(170, 175));
Polygon triangle = new Polygon(new Point(175, 175), 3, 150);
canvas.draw(triangle);
Polygon heptagon = new Polygon(new Point(500, 175), 7, 150);
canvas.setStrokeColor(Color.red);
canvas.draw(heptagon);
canvas.fillRegion(new Point(0, 350), new Point(700, 700), Color.black);
Polygon square = new Rectangle(new Point(175, 525), 150, 150);
canvas.setStrokeColor(Color.white);
canvas.draw(square);
//A circle is considered as a Polygon
Polygon circle = new Circle(new Point(500, 525), 150);
canvas.setStrokeColor(Color.green);
canvas.draw(circle);
You can also draw non regular polygons:
Polygon weirdPolygon = new Polygon(new Point[]{
new Point(100, 200),
new Point(150, 80),
new Point(227, 169),
new Point(10, 260),
new Point(10, 10),
});
canvas.draw(strangePolygon);
####Manipulating images
To demonstrate how Canvas2D handles image manipulation, we will create a canvas using the following image :
The CanvasFilters abstract class offers some image filters such as:
####Gray scaling
//To manipulate images, Canvas2D uses its own Pixmap class
Canvas2D canvas = new Canvas2D(new Pixmap("Pictures/larc-de-triomphe-paris-eugene-galien-laloue.jpg")));
canvas = CanvasFilters.grayScale(canvas);
####Negative/Inverse
canvas = CanvasFilters.negative(canvas);
#####Threshold
canvas = CanvasFilters.naiveTreshold(canvas, 10);
####Canny Edge Detection
canvas = CanvasFilters.cannyEdge(canvas);
####Pixelization
canvas = CanvasFilters.pixelate(canvas, 5);
####Color filtering
canvas = CanvasFilters.filterColor(canvas, new Color(154, 139, 130), 25);
##Combining filters
canvas = CanvasFilters.pixelate(canvas, 2);
canvas = CanvasFilters.naiveTreshold(canvas, 10);
canvas = CanvasFilters.replaceColor(canvas, Color.white, Color.orange, 1);