Вы также должны создать этот Pen за пределами l oop и обязательно избавиться от него.
Вот пример использования DrawString (), как описано в комментариях:
private void Form1_Paint(object sender, PaintEventArgs e)
{
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Center;
sf.LineAlignment = StringAlignment.Center;
int locY = 200, locX = 10, i = 0;
using (Pen pen = new Pen(Color.Red, 10))
{
for (int k = 0; k < 3; k++)
{
locX += 40;
for (int j = 0; j < 2; j++)
{
locY += 30;
Rectangle rc = new Rectangle(locX, locY, 10, 10);
e.Graphics.DrawEllipse(pen, rc);
SizeF szF = e.Graphics.MeasureString(i.ToString(), this.Font);
Rectangle rc2 = new Rectangle(new Point(rc.Left + rc.Width / 2, rc.Top + rc.Height / 2), new Size(1, 1));
rc2.Inflate((int)szF.Width, (int)szF.Height);
e.Graphics.DrawString(i.ToString(), this.Font, Brushes.Black, rc2, sf);
i++;
}
locY = 200;
}
}
}