Graphics and Graphics2D Overview

The Graphics class provides many methods for manipulating a graphics device, be it a screen or off-screen image. The Graphics2D class is a subclass of the Graphics class and contains even more useful methods for manipulating 2D graphics, such as primitive shape rendering and affine transformations. Most of your image creation should take place before you enter the game but for maximum efficiency stored as off-screen sprites and then drawn in the game as a memory copy routine with as little overhead as possible. We will see about creating off-screen images a little later. In the previous examples in this chapter, we have seen the Graphics object passed as a parameter to the methods paint and paintComponent. This is our context for drawing to the component screen. There we can explicitly cast the object to a reference of type Graphics2D, as the true type of the object is not Graphics but a subclass of Graphics.

Graphics2D g2D = (Graphics2D)g;

This means that we can now take advantage of the extra methods in the Graphics2D class on our object. The parameter will always remain of type Graphics to maintain backward compatibility (code compiled in previous versions of Java running on a more up-to-date Java Virtual Machine will still need to run, so newer versions of Java need to contain the same structures of older versions).