Not often needed when dealing with graphics, but for completeness sake, let’s investigate this for a second.

The basic proxy math, assuming that the Polar Axis is the X-Axis is:

r = sqrt(x*x + y*y)
theta = PI/2 if x=0 and y>0
theta = 3*PI/2 if x=0 and y<0
theta = arctan(y/x) otherwise

See: http://www.mathsisfun.com/polar-cartesian-coordinates.html

which means:

static void CartesianToPolar(Point p, out double angle, out double radius){
  radius = Math.Sqrt((p.X*p.X) + (p.Y+p.Y));
  double div = Math.PI /2.0;
  if (p.X==0.0){
    //On X-Axis:
    if (p.Y > 0.0){
      //To the right:
      angle = div; 
      return ;
    }else if (p.Y <0.0){
      //to the left:
      angle = 3*div;
      return;
    }
  }
  angle = Math.Atan(p.X/p.Y);
}