这有一个内置功能。请改用g.DrawEllipse()。
你可以这样做
void DrawCircle(Graphics g, Pen p, Point centre, double radius=20, int sides = 360) { var angle = 2 * Math.PI / sides; for (int i = 0; i < sides; i++) { Point from = new Point((int)(radius * Math.Sin(i * angle) + centre.X), (int)(radius * Math.Cos(i * angle) + centre.Y)); Point to = new Point((int)(radius * Math.Sin((i+1) * angle) + centre.X), (int)(radius * Math.Cos((i+1) * angle) + centre.Y)); g.DrawLine(p, from, to); } }
并使用
DrawCircle(g, p, new Point(100, 100), 50, 8); // 8 sides, an octagon
增加边数以使其更准确。
或者,
g.DrawEllipse(p, (float)(centre.X-radius), (float)(centre.Y-radius), (float)radius*2, (float)radius*2);