Как правильно использовать конструктор?
Конструктор должен иметь одну ответственность - инициализировать ресурсы. Рисовать он не должен.
Так что вариант два - в топку.
Если нужно одновременно создать и нарисовать - создайте для этого статический метод, который создаст, нарисует и вернет экземпляр.
Более правильно использовать его так, как требуется в конкретной ситуации. Если какой-то код нужно вызывать всегда, при создании объекта, разумнее поместить его в конструктор. Если вы передаёте в конструктор флаг, от которого зависит, будет ли внутри запущен тот или иной метод, это сигнал, что нужно либо создать специализированные дочерние классы, либо вызывать метод после инициализации объекта руками там, где это требуется.