Что было сложным:
алгоритм работы спирографа - кто должен вращаться вокруг кого) а также обновление изображения. в итоге центральный круг рисуется все время, второй рисуется и тут же стирается, ручка формирует массив точек которые рисуются через g.DrawLines(points);
Комментарии:
1.ручка оставляет за собой следы, почему-то, хотя окружность их не оставляет. 2.программа зависает при выполнении. по-видимому нужно класс спирографа запускать в отдельном потоке