Evitando problemas de cintilação (Flickering)

Na maioria das vezes, uma exibição de tela completa consiste em vários objetos distintos e sobrepostos, desenhados de trás para frente.

Resolvemos esse problema da mesma forma que um artista faria. Trabalhamos em uma tela na memória (chamada de Contexto de Dispositivo - DC). Esta tela é como se fosse uma tela virtual. Funciona mais ou menos assim: Primeiramente devemos selecionar a área a ser pintada (neste caso queremos pintar em toda a tela, para isso usamos o comando "Exponha tudo". Depois você "pinta" ou "desenha" todas as coisas que deseja nesta tela virtual, e depois disso exibe-a de uma só vez (usando o comando "Atualize a tela").

Rotina para que se execute o programa:
  Carregue as bibliotecas padrão.
  Limpe a tela usando a cor laranja claríssimo.
  Atribua "http://osmosian.com/page01.png" para uma URL denominada caminho.
  Crie uma imagem usando o caminho.
  Pinte a imagem.
  Atualize a tela.
  Itere.  
    Adicione 1 para um contador.
    Mova a imagem 10 pixels para a direita.
    Aguarde 3 milissegundos. 
    Exponha tudo. \ -> Seleciona a tela inteira para ser pintada
    Pinte a caixa desta tela com a cor laranja claríssimo e a cor laranja claríssimo.
    Pinte a imagem.
    Atualize a tela.
    Atribua a caixa desta tela à caixa deste contexto.
    Se o contador for 20, pare.
  Reitere.
  Aguarde pela tecla Esc.
  Desmanche todos os eventos.
  Destrua a imagem.
  Feche o programa.

Atualizado

Isto foi útil?