Нужно ли вызывать Dispose () для объекта Graphics, полученного через PaintEventArgs в событии OnPaint?
Нет, за это отвечает вызывающий слой (тот, кто фактически создал графический объект). Также подумайте об этом, когда у вас есть другие вызываемые в цепочке, вы избавитесь от объекта, и они не смогут его использовать.
В общем, вы не должны избавляться от графических объектов, которые вы получаете в качестве параметров метода. Но вам следует избавиться от созданных вами объектов Graphics (например, с помощью метода CreateGraphics).
CreateGraphics