In previous mini-labs, you have created picture objects from existing JPEG picture files. In this mini-lab you will learn how to create an empty picture to use as a blank canvas, and how to draw on it using functions provided in JES.
makeEmptyPicture function. This function takes two
parameters, the width and height of the picture to create, in pixels.
For example,
makeEmptyPicture(20, 40)would make a very small empty picture, while
makeEmptyPicture(600, 400)would make a much larger one. When you call the function, though, you will not see anything happen. You will need to
show the empty picture to see
it.
Fortunately, the makeEmptyPicture function returns
the empty picture it has created; capture this in a variable and
then pass it to the show function.makeEmptyPicture
to specify a background color. The colors that JES knows
about are black, white, red,
orange, yellow, green,
blue, pink, magenta,
cyan, gray, lightGray,
and darkGray.
Experiment with making several different empty pictures with
different background colors.
Analysis Questions: What color is an empty picture if you don't provide a third parameter? What happens if you provide only one parameter? If you provide more than three parameters? If you provide the parameters in a different order?
JES provides several functions that you can use to add text, lines,
rectangles, and ovals to a picture. When you add a new drawing element
to a picture, you need to specify where to add it. The location
is the number of pixels over from the left edge and the
number of pixels down from the top.
Location (1, 1) is the pixel in the top left corner.
If w is the
width of your picture and h is its height, then
location (w, 1) is the
pixel in the top right corner, and location (1, h) is the pixel in the
bottom left corner.
The two numbers that make up a pixel's location are called its x and y coordinates, but note that, unlike in mathematical graphs, the y coordinates start at the top and grow as they go down, not as they go up.
Analysis Questions: What is the location of the pixel in the bottom right corner? What is the location of the pixel in the center of the picture?
Next you will be using the drawing functions provided by JES:
addLine function to draw a line in your
picture. The addLine function takes 6 parameters: the
picture in which you want to draw,
the x and y coordinates of one endpoint,
the x and y coordinates of the other endpoint, and the
color you want the line.
Debugging Tip:
Remember that you must show the picture again to see your
new line!
addRect function to draw an outline of a
box (an unfilled rectangle) in your
picture. The addRect function also takes 6 parameters,
but only the first and the last have the same meaning as in the
addLine function. The second and third parameters
represent
the x and y coordinates of the upper-left
corner of the box, while the fourth and fifth parameters
represent the box's width and height.addRectFilled function to draw a filled box
in your picture. The parameters passed to addRectFilled are
the same as those passed to addRect, except that
addRectFilled fills the rectangle with the specified
color.addText function to add a string (such as
your name) to your picture. In this case,
the x and y coordinates represent the left edge of an
invisible baseline for the text string, similar to the line on a
sheet of lined paper.
Analysis Questions: What happens if you add the text "This is silly" to your picture at location (1, 1)? At location (1, 20)? At location (1, w), where w is the width of your picture? At location (1, w - 40)?
show,
but it should include a return statement that returns the
new picture. To test your function, Load it, call it from
the command area, and
then call show on the picture it returns.Programming Tip: First write your function to just make an empty canvas, then call your function and show the resulting picture. Once this works, go on to add your drawing elements. Again, you may wish to add one or two elements and then test it before going further.
Shortcut: Remember that you can use the up arrow in the command area to go back to the previous command and then hit enter to run that command.
getWidth(picture) and getHeight(picture).
You may wish to pass the same picture in every time you test it, or
you may wish to pass in a blank canvas each time.
pickAFile and makePicture! (Alternatively,
you can use the pickAndShow function if you copy and
paste it from pickAndShow.py into your new file.)
Finally, if the drawing created in this function is different from the
drawing created in the previous exercise, try drawing one picture on
top of the other.