Um mal ein paar Denkanstöße zu geben:
Das Problem lässt sich bedeutend einfach in Polarkoordinaten lösen. Es empfiehlt sich also, die eigentliche Problemlösung in Polarkoordinaten zu rechnen und dann eine Prozedur zu schrieben, die einen Punkt von Polarkoordinaten in einen Bildpunkt umrechnet. (Darin kannst du dann gleich das Runden machen)
function PolarToPixel(r, phi: Double) : TPoint
Hierbei beachten: Die y-Achse im Bild zeigt nach unten und der Ursprung soll in der Bildmitte liegen. Also noch eine Spiegelung und eine Verschiebung machen.
Die Punkte kannst du dann in MoveTo() uns LineTo() stecken, um eine Linie zu zeichnen.
P.S.: Doch es sind Winkel gegeben. Indirekt - denn es soll ja eine regelmäßige Figur sein (alle Winkel gleich und alle Winkel zusammen ergeben 360°) und die Anzahl der Ecken wird ja eingegeben