Qual é o caminho certo para usar o OnPaint em aplicativos .Net?

Às vezes preciso de uma aparência personalizada de um controle. Ou faça muita pintura personalizada. Eu sei que posso fazer isso comOnPaint (Vejo:http://msdn.microsoft.com/pt-br/library/system.windows.forms.control.onpaint.aspx)

Qual é o caminho certo para pintar coisas personalizadas em seu aplicativo .net usandoOnPaint? Há alguma regra que devo ter em mente para manter meu aplicativo otimizado e manter o tempo de renderização no mínimo?

Nota: Eu tenho visto e experimentei muitos usos ineficientes do OnPaint de tempos em tempos, portanto eu criei este Q & A.

questionAnswers(1)

yourAnswerToTheQuestion