HTML and CSS Reference
InDepth Information
x
+
0.5
*
width
Next, we must find the
y
location for the origin translation. This time, we use the
y
value of
the topleft corner of our shape and the height of the shape:
y
+
0.5
*
height
The
translate()
function call looks like this:
context
.
translate
(
x
+
0.5
*
width
,
y
+
0.5
*
height
)
Now that we have translated the canvas to the correct point, we can do our rotation. The code
has not changed:
context
.
rotate
(
angleInRadians
);
Finally, we need to draw our shape. We cannot simply reuse the same values from
Example 28
because the canvas origin point has moved to the center of the location where
we want to draw our object. You can now consider 125,125 as the starting point for all draw
operations. We get
125
for
x
by taking the upperleft corner of the square (
100
) and adding
half its width (
25
). We do the same for the
y
origin position. The
translate()
method call
accomplishes this.
We will need to draw the object starting with the correct upperleft coordinates for
x
and
y
.
We do this by subtracting half the width of our object from the origin
x
, and half the height of
our object from the origin
y
:
context
.
fillRect
(

0.5
*
width
,

0.5
*
height
,
width
,
height
);
Why do we do this?
Figure 214
illustrates the situation.
Consider that we want to draw our square starting at the topleft corner. If our origin point is
at 125,125, the top left is actually 100,100. However, we have translated our origin so that the
canvasnowconsiders125,125tobe0,0.Tostartourboxdrawingatthenontranslated canvas,
we have to start at −25,−25 on the “translated” canvas.
Thisforcesustodrawourboxasthoughtheoriginisat0,0,not125,125.Therefore, whenwe
do the actual drawing of the box, we must use these coordinates, as shown in
Figure 215
.