Como salvar em um arquivo de imagem o que tem dentro do Pane
Como faço para salvar em um arquivo de imagem todo o conjunto de imagens que estã dentro de um Panel?
Raserafim
Curtidas 0
Respostas
Marcelo Saviski
19/12/2004
vc quer coloca-las lado a lado em uma nova imagem?
GOSTEI 0
Raserafim
19/12/2004
o panel contém varios Timage (que foram criados dinamicamente em tempo de execução). Preciso salvar o modo como as imagens estão dispostas no panel, como se isso fosse uma imagem só.
É como se eu tivesse montado uma imagem juntando várias imagens e agora preciso salvar isto, ou seja, o conjunto de imagem (como se fosse apenas uma) que está dentro do panel.
É como se eu tivesse montado uma imagem juntando várias imagens e agora preciso salvar isto, ou seja, o conjunto de imagem (como se fosse apenas uma) que está dentro do panel.
GOSTEI 0
Marcelo Saviski
19/12/2004
Tente isso, deve servir de base:
Se todas as imagens estiverem visíveis no panel, não tiver nenhuma que fique pra fora da área visível isso deve dar certo.
var BMP: TBitmap; I: Integer; begin BMP := TBitmap.Create; BMP.Width := Panel.Width; BMP.Height := Panel.Height; try for I := 0 to Panel.ConreolCount - 1 do if Panel.Controls[I] is TImage then with TImage(Panel.Controls[I]) do BMP.Canvas.Draw(Left, Top, Picture.Graphic); BMP.SaveToFile(´Imagem.bmp´); finally BMP.Free; end; end;
Se todas as imagens estiverem visíveis no panel, não tiver nenhuma que fique pra fora da área visível isso deve dar certo.
GOSTEI 0
Raserafim
19/12/2004
valeu pela atenção Marcelo,
mas o código ainda nao deu certo. Na linha:
BMP.Canvas.Draw(Left, Top, Picture.Graphic);
o parâmetro Picture.Graphic não existe, o que posso colocar no lugar dele?
mas o código ainda nao deu certo. Na linha:
BMP.Canvas.Draw(Left, Top, Picture.Graphic);
o parâmetro Picture.Graphic não existe, o que posso colocar no lugar dele?
GOSTEI 0
Marcelo Saviski
19/12/2004
estranho, o Picture.Graphic deveria vir do componente Image que é feito um TypeCast aqui: [color=green:8feeddc5e6]with TImage(Panel.Controls[I]) do[/color:8feeddc5e6]
qual Delphi vc está usando?
qual Delphi vc está usando?
GOSTEI 0
Raserafim
19/12/2004
já saquei o problema, mas não a solução.
o problema é que estou utilizando o componente TPaintBox (pois precisei que a imagem fosse repetida no componente todo, portanto preciso do evento OnPaint) ao invés do TImage.
Pelo que percebi não tem nenhuma propriedade do TPaintBox que seja TGraphics. Mas a idéia que tive é transformar o TPaintBox em TImage, tem alguma forma de copiar o que está no Canvas do TPaintBox para o TImage? ou se tiver outra solução melhor...
o problema é que estou utilizando o componente TPaintBox (pois precisei que a imagem fosse repetida no componente todo, portanto preciso do evento OnPaint) ao invés do TImage.
Pelo que percebi não tem nenhuma propriedade do TPaintBox que seja TGraphics. Mas a idéia que tive é transformar o TPaintBox em TImage, tem alguma forma de copiar o que está no Canvas do TPaintBox para o TImage? ou se tiver outra solução melhor...
GOSTEI 0
Marcelo Saviski
19/12/2004
ha tá, ai sim
só para tirar a dúvida, vcvtem só um paint box ou + de 1 dentro do panel?
se for só um, então pode fazer assim:
só para tirar a dúvida, vcvtem só um paint box ou + de 1 dentro do panel?
se for só um, então pode fazer assim:
var BMP: TBitmap; I: Integer; r: TRect; begin BMP := TBitmap.Create; try with PaintBox do begin BMP.Width := Width; BMP.Height := Height; r := Rect(0, 0, Width, Height); BMP.Canvas.CopyRect(r, Canvas, r); end; BMP.SaveToFile(´Imagem.bmp´); finally BMP.Free; end; end;
GOSTEI 0