Title: CSC 308 Graphics Programming
1CSC 308 Graphics Programming
- Say Hi to Graphics
- i.e. A first, simple graphics program
Dr. Paige H. Meeker Computer Science Presbyterian
College, Clinton, SC
2Lecture 2
- Creating Simple Graphics in Java
- Homework
- Material modified from Computer Graphics via
Java by Ian Ferguson online ebook and a nice
download) http//www.ablibris.com/site/review.php
3?bid19
3Features
- Main window
- Graphics canvas
- Some lines drawn
4Lets Say Hi!
5Javas Machinery
- In order to draw things on screen (which is what
this is all about) you have to have quite a bit
of Java machinery in place before you can start.
6Gapp and Gcanvas are ours were developing
them. JFrame and JPanel from which they inherit,
are part of the Java Foundation Classes - in
particular they are part of the swing GUI
components. The class Gapp inherits from
JFrame, so when a Gapp object is created, a new
GUI window appears on the screen. A
Gcanvas/JPanel is simply something we can draw
on, but it isnt allowed to be on screen by
itself, it must be part of a JFrame. So what we
actually need is an instance of Gapp with an
instance of Gcanvas inside it
7Gapp main()
- static public void main(String args)
- // Main entry point
- try
- Gapp myGapp new Gapp()
- myGapp.initComponents()
- myGapp.setVisible(true)
-
- catch (Exception e)
- e.printStackTrace()
-
- //end main
8Gapp initComponents()
- public void initComponents() throws Exception
- setLocation(new java.awt.Point(0, 30))
- setSize(new java.awt.Dimension(350, 400))
- setTitle("Graphics Application")
- getContentPane().add(new Gcanvas())
- addWindowListener(new java.awt.event.WindowAdapte
r() - public void windowClosing(java.awt.event.WindowE
vent e) - thisWindowClosing(e)
-
- )
- //end - initComponents
9- public void paintComponent(Graphics g)
- g.drawLine(100,50,100,150)
g.drawLine(100,100,150,100)
g.drawLine(150,100,150,150)
g.drawLine(200,150,200,100)
g.drawLine(200,50,200,60) -
10Upon Closer Examination
- you may be asking, this program doesnt actually
seem to call the paintComponent method and where
does it get g the Graphics object from? You are
right, it doesnt. paintComponent is what is
known as a callback method. Its actually
called by the system everytime the JPanel object
it belongs to needs to be displayed on screen and
likewise the system passes us the mysterious g
to provide all of those useful functions - we
dont have to worry about it.
11So,
- Our program hi is actually a simple drawing of
5 lines, each with its own start and end point.
To draw using this technique, its easiest to
create a grid, label it, and plot your points.
12Graphics Primitives
- A graphics primitive can be loosely defined as a
drawing function which the system makes available
to the applications programmer. - Java implements a comprehensive set of graphics
primitives. Lets take a look at their
description
13Java Graphics Class API
- http//java.sun.com/j2se/1.5.0/docs/api/
14Homework Due Wednesday, 8/30/06
- Modify the Gcanvas.java code to draw a square.
- Create from this a Swirling Square as seen
below.
15Homework Hint
- This basically draws a square, then a second
square inside the first reduced in size by 0.1
and slightly rotated. This continues for 40
iterations. - HINT P1x ((1-u)Px)(uQx) and P1y
((1-u)Py)(uQy) and so on and so on