Fórum Zoom no TImage #179977

04/09/2003

0

Pessoal, td bem,
Estou precisando do código para afzer um zoom(aproximar e voltar a imagem), se alguem ter o código, poderia me ajudar,
obrigado


Luizfernando777

Luizfernando777

Responder

Posts

05/09/2003

Cebikyn

Use a seguinte procedure:

procedure SetCanvasZoomFactor(Canvas: TCanvas; AZoomFactor: Integer);
var
  i: Integer;
begin
  if AZoomFactor = 100 then
    SetMapMode(Canvas.Handle, MM_TEXT)
  else
  begin
    SetMapMode(Canvas.Handle, MM_ISOTROPIC);
    SetWindowExtEx(Canvas.Handle, AZoomFactor, AZoomFactor, nil);
    SetViewportExtEx(Canvas.Handle, 100, 100, nil);
  end;
end;


Depois basta chamar:

SetCanvasZoomFactor(Image1.Canvas, zoom)


Em que [i:08cfae12c6]zoom[/i:08cfae12c6] é a porcentagem de zoom.


Responder

Gostei + 0

05/09/2003

Luizfernando777

prezado colega,
obrigado pelo código, mas não está funcionando


Responder

Gostei + 0

05/09/2003

Cebikyn

Fiz uns testes e percebi que a forma correta de chamar a [i:40ae54244e]procedure[/i:40ae54244e] é:

procedure TForm1.Button1Click(Sender: TObject);
var
  bitmap: TBitmap;
begin
  bitmap := TBitmap.Create;
  try
    bitmap.Assign(Image1.Picture.Bitmap);
    SetCanvasZoomFactor(bitmap.Canvas, 50);
    Image1.Canvas.Draw(0, 0, bitmap);
  finally
    bitmap.Free
  end;
end;



Responder

Gostei + 0

06/09/2003

Luizfernando777

Colega, muito obrigado pela ajuda,
mas eu deveria ter me explicado melhor,
eu estou precisando de um código mais apurado,
é que eu estou trabalhando com mapas, cartas topográficas,
mapas urbanos essas coisas.
Então o motivo de fazer zoom e voltar imagem,

obrigado,
se você achar melhor este é meu e-mail
luizfernando777@yahoo.com.br
obrigado + 1 vez

fernando


Responder

Gostei + 0

06/09/2003

4_olho

Colega,

Como a sua necessidade é grande, é provável que não possa trabalhar com imagens comuns (bitmaps) e sim com imagens ´vetoriais´. Estas, independentes do tamanho, podem ser aumentadas e reduzidas facilmente, sem perda de qualidade. Só não creio que haja alguma aplicação desktop de baixo custo que vá satisfazê-lo. Pelo menos não tão fácil quanto imagina.

Um alternativa é digitalizar a imagem com alta resolução (1200 dpi) ou mais e ao usá-la no micro (72, 96 ou 120 dpi) a imagem fica ´enorme´, podendo então sempre dar o zoom para baixo. Mesmo esta alternativa exigirá muito espaço em disco e muita memória, pois as imagens, por pequenas que sejam, terão por volta de 30Mb.

Dê uma espiada no Guia 4 Rodas em CD e tente ver como trabalham.


Responder

Gostei + 0

07/09/2003

Luizfernando777

Prezado Colega,
Na verdade o meu projeto já está pronto,
eu tenho o mapa da cidade já em Formato .BMP,
que está com 8.3 mb, está funcionando perfeitamente,
Na questão do Micro, não é o problema,
está em um Pentium 1.8Gz, 512 Ram DDR, Off-Board,
E a imagem só é carregada na necessidade da mesma,
caso contrário não fica na Memória,
Mas, qdo eu usei sua ´Procedure´, ainda deu
alguns problemas, é isso mesmo que preciso,
estou tentando implementar um código que tenho aqui,
mas não está dando muito certo,
A imagem amplia, mas fica restria a um tamanho.
Se você puder me manda o seu e-mail,
mando o meu teste e aí você vê o que está acontecendo.

obrigado


Responder

Gostei + 0

07/09/2003

Cebikyn

A imagem amplia, mas fica restria a um tamanho.

Como assim? Se vc estiver se referindo a dar zoom em apenas uma área, basta alterar os números em ´Image1.Canvas.Draw([b:830a3add79]0[/b:830a3add79],[b:830a3add79]0[/b:830a3add79],bitmap)´. Se não for isso, pode usar o link de e-mail logo abaixo da minha assinatura.

Só não creio que haja alguma aplicação desktop de baixo custo que vá satisfazê-lo. Pelo menos não tão fácil quanto imagina.


Existe sim, tem até uma coleção de componentes pro Delphi, [i:830a3add79]free[/i:830a3add79] e com todos os códigos fontes, que trabalha com arquivos do AutoCAD, chama [url=http://www.torry.net/cad.htm]CADSys 4.2[/url]. E é relativamente fácil de usar.


Responder

Gostei + 0

07/09/2003

Luizfernando777

vou dar uma olhada no componente,
obrigado


Responder

Gostei + 0

07/09/2003

4_olho

:oops: Obrigado! - Eu também vou olhar .... :oops:


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar