Okay, first things first, we calculate the centerpoint of the rect. Store that away in a variable.
I'll be using the following rectangle as an example.

Now, we need to calculate the angle from the centerpoint up to the upper right corner.

We can calculate this angle using inverse tangent. First we need to get the tangent though.
The tangent of an angle is the opposite side divided by the adjacent side. So we need to calculate those two sides. This is easy since we know that the Y component will be exactly half of the height of the rectangle, and the x component will be exactly half of the width. Now, the opposite side of the angle is the y component, or 1. The adjacent side is the x component: 2. So opposite/adjacent = 1/2 = .5
.5 is the tangent of the unknown angle. Doing an inverse tangent, or Atan of that value will give us the actual angle. So the angle is 26.56505... as the next picture shows.

Now, any angle between 0 and Angle A will have an X value of CenterPoint_X + 1/2 width. In fact, if you think about it any angle between 360 and (360-a) will also have the same X value. Here's a picture to help visualize that

The X value is always the same for any angle between 360-a and a. The Y component of the point is the only thing that changes. So, we can treat any angle between 360-a and a as being in it's own "quadrant" and handle it from there. To do this in code we first need to calculate angle a as described above. Stash this away in a variable.
So now we can do a simple test we we want to find a point on the perimeter.
First I'm going to do a mod on the angle to make sure it falls between 0-360 degrees. This way, an angle of 720 is treated as 360, an angle of 540 is treated as 180, etc.
so in semi pseudo-code it might look something like this
angle_a 'this is the angle we calculated above
test_angle ' this is the angle we are finding the point for
test_angle = test_angle mod 360.
if ( (test_angle > 360 - angle_a ) OR (test_angle < angle_a))
'calculate point here
endif
But how do we actually calculate the X and Y of the point? The X is easy. Remember, if the angle we are testing falls into this "quadrant" (360-a to a) we know the X will be Centerpoint_X + width/2. We need to figure out the Y.
To do so, we need to do some math again. So, let's say that we have a test_angle of 13 degrees. The following picture display how we can determine Y.

This time we know the angle, so we know that Tangent(13) = opposite/adjacent. So tangent(13) = y/2.
This leaves us with .2308 = y/2. Solving for y gives us y = .2308 * 2. Y = .4617.
However, .4617 is not the actual value of the Y component of the point. .4617 is the distance from the centerpoint Y to the actual points Y component. So to get the actual points Y component we subtract .4617 from the centerpoints Y. So we end up with
centerpoint_y = 1
1-.4617 = .5383
So the actual points values are
X = centerpoint_x + width/2
X = 2 + 2
X = 4
and
Y = centerpoint_y - y_component
Y = 1 - .4617
Y = .5383
To prove that this works on angles falling between (360-a) and 360, lets look at another example.

So doing the math on this one (which is all done in the picture above) we get a Y component of -.89045. Remember, we need to subtract this amount from the y of the centerpoint to get our actual Y value. So we get
X = 4
Y = 1 - (-.89045) 'negatives cancel out
Y = 1.89045
As you can see, the point we got makes sense given the angle we were testing.
Let me know if this makes sense or if you don't need me to go on anymore. Basically, what is left to do is to calculate the X component of the point when the test angle is greater than angle A but less than 180 minus angle a, or when the test angle is greater than 180 + a and less than 360 - a.
A test angle that falls between 180-a and 180 + a is basically computed the same way as the points above, except it's X value is NOT going to be centerpoint_x + 1/2 width but instead will be centerpoint_x - 1/2 width. Basically, we calculate the Y component the same as we did before, but the X component is now the "other side of the rectangle."
Like I said, let me know if this makes sense and if I should elaboraet further. I don't want to oversimplify and at the same time don't want to be too vague. Oh, and I should get back to coding my game for the moment ;).
Hope this helps.