Você está aqui: Delphi ::: Dicas & Truques ::: Gráficos |
|||||
Meus desenhos e gráficos desaparecem quando o formulário é redesenhado. O que fazer?Quantidade de visualizações: 11978 vezes |
|||||
Quando estamos desenhando gráficos ou imagens na superfície do formulário ou qualquer outro controle em Delphi podemos perceber que tais desenhos são apagados quando o formulário é minimizado e maximizado ou sobreposto por outro formulário e novamente exibido. Para evitar que isso aconteça, qualquer desenho deve ser feito no evento OnPaint do formulário ou controle desejado. Note que este evento é disparado antes que os controles (botões, caixas de texto, etc) sejam desenhados ou redesenhados no formulário). Veja um exemplo no qual usamos o evento OnPaint do formulário para desenhar uma linha vertical no mesmo:
Agora o desenho é feito todas as vezes que o formulário for redesenhado pelo Windows. Há, contudo, casos nos quais queremos forçar o redesenho do formulário, ou seja, queremos disparar o evento OnPaint. Para isso só precisamos chamar o método Repaint() do componente no qual o desenho vai ser efetuado. Este método chama o método Invalidate() e então o método Update() para forçar o redesenho. Para ver um exemplo do uso do método Repaint(), siga os seguintes passos: a) Vá na seção de declaração de variáveis globais e declare as seguintes variáveis:
b) Coloque o código abaixo no evento OnCreate do formulário:
c) Agora coloque o código abaixo no evento OnClick de um botão:
d) Finalize colocando o código abaixo no evento OnPaint do Form:
Execute a aplicação e experimente clicar no botão várias vezes. Você verá que a cada clique a linha anterior é apagada e uma nova linha é desenhada em coordenadas aleatórias. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
|||||
![]() |
|||||
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |