Да, вы должны сделать это для всех (IDisposable) объектов, которые вы создаете.
Исключениями являются стандартные объекты (Brushes.Blue, Pens.Black, e.Graphics, ...), поскольку вы их не создаете.
это может сделать код очень загроможденным.
using
не так загроможден, как полная попытка / наконец. Обратите внимание, что вы можете сэкономить на вложенности:
using (Pen p = ...)
using (Brush b = ...)
{
// draw with p and b
}
Но если выбор между загроможденным кодом или возможностью сбоя программы, есть ли выбор?