Pintar no canvas

Delphi

31/12/2003

Estou usando o metodo draw para pintar uma imagem no canvas de um TCustomControl, porem quando ele sai da tela e volta a imagem desaparece, para que a imagem continue eu preciso sobreescrever o metodo WMPaint ? Ficar pintando a imagem toda hora nao iria consumir muito processamento ? Tipo, eu usava um timage no TCustomControl, mais pensei em melhorar meu component para consumir menos memoria e resolvi tirar o timage e pintar direto no canvas, alem de tirar os tlabels tbm e escrever com textout. Existe alguma outra maneira de fazer a imagem pintada com draw ficar nao desaparecer, inclusive se tiver barra de rolagem e rolar para fora da visao do componente depois voltar a imagem some tbm, alguem pode me ajudar ?
Obrigado
Emilio


Emilio.cini

Emilio.cini

Curtidas 0

Respostas

Emilio.cini

Emilio.cini

31/12/2003

ninguem tem uma ideia ai nao ??? :lol:


GOSTEI 0
Beppe

Beppe

31/12/2003

Quando você pinta uma coisa num canvas, isto persiste até que o canvas seja sobrescrito. Se este canvas vem de um TImage, a imagem do canvas não é perdida quando o controle é, mesmo que totalmente, oculto. Isto se deve ao fato de que o canvas do TImage é próprio, baseado em um TBitmap. Já um TCustomControl compartilha uma área do canvas do desktop, então você precisa informá-lo quando deve ser repintado.

Em suma, você soprepõe o método protegido Paint, e coloca o código que pinta ali.


GOSTEI 0
Emilio.cini

Emilio.cini

31/12/2003

Tem como eu definir para o canvas so for pintado quando eu chamar a funcao paint, pra nao ficar atualizando sozinho ?


GOSTEI 0
Beppe

Beppe

31/12/2003

Bem, não tem sentido fazer isso, afinal você não quer que fiquem apagadas algumas partes...


GOSTEI 0
Nigro

Nigro

31/12/2003

ondee posso conseguir o código para desenvolver uma ferramenta que faz a pintura dentro de um poliigono, como aquela do Paint?


GOSTEI 0
POSTAR