Как нарисовать правильный многоугольник С#?
Чтобы получить вершины - от начальной точки откладываешь отрезок радиусом R, скажем вправо - это первая вершина, потом поворачиваешь на угол (360/N, где N - число углов), получаешь координаты второй вершины, потом поворачиваешь ещё на столько же - получаешь координаты третьей, и т.д. Я бы сделал так.
Мой вариант private void Form1_Paint(object sender, PaintEventArgs e) {
  DrawRegularPolygon(new PointF(100, 100), 10, 100, e.Graphics);
}

private static void DrawRegularPolygon(PointF center, // Координаты центра окружности
   int vertexes, // Количество вершин
   float radius, // Радиус
   Graphics graphics) {
  var angle = Math.PI*2/vertexes;

  var points = Enumerable.Range(0, vertexes)
        .Select(i => PointF.Add(center, new SizeF((float) Math.Sin(i*angle)*radius, (float) Math.Cos(i*angle)*radius)));

   graphics.DrawPolygon(Pens.Black, points.ToArray());
   graphics.DrawEllipse(Pens.Aqua, new RectangleF(PointF.Subtract(center, new SizeF(radius, radius)), new SizeF(radius * 2, radius * 2)));
}