Может быть достаточно просто позвонить
SetStyle(ControlStyles::UserPaint | ControlStyles::AllDrawingInWmPaint, true);
Мерцание, которое вы видите, скорее всего, потому что Windows сначала рисует фон элемента управления (через WM_ERASEBKGND), затем просит ваш элемент управления сделать то, что вам нужно сделать (через WM_PAINT). Отключение фоновой краски и выполнение всей рисования в переопределении OnPaint может устранить проблему в 99% случаев без необходимости использования всей памяти, необходимой для двойной буферизации.