COPIAR IMAGEM

IGNORANTE 08/01/2011 07:42:02
#361593
Olá a todos

Tenho uma Image1 com um gráfico e AutoRedraw=True.
Copio esse imagem para uma Picture3, também com AutoRedraw=True com

Picture3.PaintPicture Picture1.Image, 0, 0, Picture1.Width, Picture1.Height, Picture1.Left, Picture1.Top, Picture1.Width, Picture1.Height

Fica lá correctamente.

Depois, apago a imagem de Picture1 e tento copiá-la de Picture3 com

Picture1.PaintPicture Picture3.Image, 0, 0, Picture3.Width, Picture3.Height, Picture3.Left, Picture3.Top, Picture3.Width, Picture3.Height

Não copia.
As duas Picture são exactamente iguais, com as mesmas dimensões.

Por que não copia?
Onde está o erro?

Desde já obrigado pela ajuda que vier.
HIDDEN 05/04/2011 23:26:24
#370540


[ô] Carregando Picture3
Private Sub Command1_Click()
Picture3.Picture = Picture1.Picture
End Sub

[ô] Apagando Picture1
Private Sub Command2_Click()
Picture1.Picture = Nothing
End Sub

[ô] Transferindo Picture3 para Picture1
Private Sub Command3_Click()
Picture1.Picture = Picture3.Picture
End Sub
MARCELO.TREZE 06/04/2011 01:40:46
#370551
Resposta escolhida
mude a propriedade autoredraw das duas picturebox para [txt-color=#0000f0]True[/txt-color]

e proceda desta maneira


Private Sub Command1_Click()
Picture3.PaintPicture Picture1.Image, 0, 0, Picture1.Width, Picture1.Height
Picture1.Picture = Nothing
End Sub

Private Sub Command2_Click()
Picture1.PaintPicture Picture3.Image, 0, 0, Picture3.Width, Picture3.Height
Picture3.Picture = Nothing
End Sub



HIDDEN 06/04/2011 07:08:32
#370559
Não há necessidade de chamar o método PaintPicture, que irá copiar a imagem pixel a pixel, quando se pode transferir ela de buffer para buffer, diretamente (muito mais rapido, dependendo do tamanho da imagem). Bem, ao menos é minha opnião.
Tópico encerrado , respostas não são mais permitidas