По умолчанию перо имеет PenAlignment.Center .
Это означает, что половина его рамки будет рисоваться за пределами ограничительного прямоугольника.
Вы можете просто избежатьпроблема, изменив его на PenAlignment.Inset
:
using (Pen p = new Pen(Color.Black, 4) { Alignment = PenAlignment.Inset})
{
g.DrawEllipse(p, new Rectangle(0, 0, layer.Width, layer.Height));
}
Обновление: Если вы хотите включить сглаживание дляДля графического объекта вам понадобится 1 или 2 дополнительных пикселя с обеих сторон пера для сглаживания пикселей.Использование меньшего ограничивающего прямоугольника теперь нельзя избежать.Но ..:
Rectangle rect = new Rectangle(Point.Empty, layer.Size);
rect.Inflate(-1, -1); // or -2
.. следует сделать ..