Zoom no TImage
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
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
Curtidas 0
Respostas
Cebikyn
04/09/2003
Use a seguinte procedure:
Depois basta chamar:
Em que [i:08cfae12c6]zoom[/i:08cfae12c6] é a porcentagem de zoom.
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.
GOSTEI 0
Luizfernando777
04/09/2003
prezado colega,
obrigado pelo código, mas não está funcionando
obrigado pelo código, mas não está funcionando
GOSTEI 0
Cebikyn
04/09/2003
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;
GOSTEI 0
Luizfernando777
04/09/2003
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
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
GOSTEI 0
4_olho
04/09/2003
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.
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.
GOSTEI 0
Luizfernando777
04/09/2003
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
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
GOSTEI 0
Cebikyn
04/09/2003
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.
GOSTEI 0
Luizfernando777
04/09/2003
vou dar uma olhada no componente,
obrigado
obrigado
GOSTEI 0
4_olho
04/09/2003
:oops: Obrigado! - Eu também vou olhar .... :oops:
GOSTEI 0