Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the...

19
Java Unit 5: Applets and Graphics Drawing and Filling Geometric Shapes

Transcript of Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the...

Page 1: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Java Unit 5: Applets and Graphics

Drawing and Filling Geometric Shapes

Page 2: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Java comes with more than just points and lines.

Within the Graphics2D class, there are also methods for drawing rectangles, circles, and ellipses.

Page 3: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Graphics2D g2 = (Graphics2D) g;Rectangle2D.Double myRectangle = new Rectangle2D.Double(10, 20, 30, 40);g2.draw(myRectangle);myRectangle = new Rectangle2D.Double(50,

20, 30, 40);g2.fill(myRectangle);

Page 4: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Rectangle2D and Ellipse2DRectangle2D is a class from which rectangle shaped

objects derive from. They are constructed like so:

Rectangle2D.Double mRect = new Rectangle2D.Double(x, y, width, height);

X and Y refer to the upper-left corner of the rectangle.Ellipse2D also works the same way, except only its

Double and Float classes can be used:Ellipse2D.Double mEllipse = new Ellipse2D.Double(x, y,

width, height);There is no ‘Ellipse’ class that derives from Ellipse2D.Also note that there is no way to define the ‘center’ of the

ellipse. Only the upper-left hand corner.

Page 5: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Rectangle2D and InheritanceRectangle2D works similarly to Point2D.

There are Double and Float classes for it, accessed by using Rectangle2D followed by a dot.

There is also a Rectangle class that extends the Rectangle2D class.

Page 6: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Draw and fillThe previous example used two methods of

drawing.g2.draw(mRectangle);g2.fill(mRectangle);

‘Draw’ methods typically draw the outline of a shape, while ‘fill’ methods will fill the entire body of the shape.

Graphics2D also has methods for drawing shapes without defining the rectangle in its own variable.G2.drawRect(x, y, width, height);G2.fillRect(x, y, width, height);

Page 7: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Java Unit 5: Applets and Graphics

Colors

Page 8: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Much Excite!Tired of dull and boring shape drawings?The Java API has a built-in Color class, too!Include it in your project today with:

import java.awt.Color;

Page 9: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Color doesn’t follow naming conventions!?There is a way to fetch pre-defined colors

from the Color class. There are constants built into Color, named according to the color they should represent.

Examples:Color.red, Color.blue, Color.magenta,

Color.white…Notice that even though they are constants,

they are completely spelled with lower case letters.

Page 10: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Creating your own colorsColors can be constructed like:

Color myCol = new Color(float r, float g, float b);

r, g, and b are values between 0.0 and 1.0, with 0.0 being no color, and 1.0 being the maximum amount of one color that can be used.

Color myCol = new Color(0.75F, 0.0F, 0.25F);Notice that we are using floats instead of

doubles for this constructor. It is important to remember that all ‘float’ values

end with an ‘F’. This denotes that it is a float value, and not a double value. Without it, there would be a compiler error.

Page 11: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Using ColorsThis involves our Graphics2D object, g2.As already noted, you can think of Graphics

as a pen.Before you draw a shape, there is a method

called ‘setColor()’ which you can call to change the color of what you’re drawing.g2.setColor(Color.red);

g2.draw(myRectangle);This would draw a red rectangle.

Page 12: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Java Unit 5: Applets and Graphics

Text

Page 13: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Words!!Of course, it’s also possible to draw text onto

graphical output, as well as defining fonts for drawing.

Graphics2D’s drawString method:G2.drawString(String text, int x, int y);When defining x and y, you are defining where

the text’s left-hand base line is (typically, the bottom of the text), and not the upper-left hand corner of where text is being drawn.

Page 14: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Fonts!!You may want to change the font that we use

in drawing.Import this class:

import java.awt.Font;Among the system supplied fonts in Java are:

SerifSansSerifMonospacedDialogDialogInput

Page 15: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Fonts!!The fonts can also be set to different sizes,

which are given in measurements of ‘points’.Fonts can also be given different

characteristics such as bold and italic.

Page 16: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Fonts in Action!!Font myFont = new Font(“Serif”, Font.BOLD,

16);g2.setFont(myFont);g2.drawString(“My text”, 20, 30);

The constructor for Font takes in a string containing the name of the font, an integer constant defined in the Font class, and the point size as an integer.

Just like with colors, we are calling the setFont() method to set the font before we draw the text.

Finally, we draw the string like usual.

Page 17: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Text PositioningUnfortunately, it will be difficult to determine

where exactly text will go when you define its position.

Getting it in the right place may require trial and error.

Just keep adjusting the position until it looks right.

Page 18: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Final ExampleAn example applet of the graphical techniques covered is on our website at math.uaa.alaska.edu/~android/java/unit5. You could try compiling it yourself to see how all of this graphical wizardry works.

Page 19: Drawing and Filling Geometric Shapes. Java comes with more than just points and lines. Within the Graphics2D class, there are also methods for drawing.

Things to try doing:Change the positioning, width, and height of

the shapes.Changing the colors.Changing colors at different points within the

code.Change the font, point size, or characteristics

of the text drawn