Esta semana um de meus clientes reclamou do flickering ou efeito flicker (pisca-pisca) no letreiro digital de um de meus programas de painel eletrônico. Realmente havia um pouco de flicker, mas nada que atrapalhasse tanto. Porém ele afirmou que o efeito estava tornando a mensagem ilegível. Pesquisando um pouco descobri que alguns temas, como o Classic, do Windows 7 (S.O. do cliente), este efeito aparece bastante nos forms. Pedi para ele testar o tema Aero enquanto não encontrava uma solução. Mas com um pouco mais de pesquisa descobri uma propriedade que praticamente eliminou o efeito: DoubleBuffered.
Basta acrescentar o código abaixo no evento OnCreate do form:
Panel1.DoubleBuffered := true;
Label1.ControlStyle := Label1.ControlStyle + [csOpaque];
A propriedade ControlStyle também ajuda na eliminação deste efeito. Quando em true, DoubleBuffered vai requerer um pouco mais de memória, mas nada que comprometa o desempenho do sistema. A idéia por trás da propriedade DoubleBuffered é preparar a imagem da tela na memória, antes de sua exibição e então torná-la visível.
Fontes:
Picture Motion - Double Buffering
http://delphi.about.com/library/bluc/text/uc092700a.htm
GDI Graphics In Delphi
http://delphi.about.com/library/bluc/text/uc052102g.htm
[]'s,
Ericson Benjamim.