Olá pessoal, estou desenvolvendo o meu TCC, cujo o objetivo é um gerador de mapas temáticos com base em arquivos Shapefile, já consegui talvez a parte mais dificil que é carregar os dados geográficos do mapa e realizar o seu desenho na tela, porém agora pretendo implementar a funcionalidade de Zoom utilizando o AffineTransform.
Eu gostaria de implementar o Zoom no qual o mapa é redimensionado a partir do clique do usuário clica em uma determinada região da tela, porém estou com dificuldades para realizar o calculo de translação, pois gostaria que após clique do usuário aquela região seja aumentada porém gostaria de centralizar ela na tela.
Sei que para realizar a translação devo usar o método translate, porém a minha dificuldade é na realização do calculo, não entendo muito bem como ele é feito.
Será que alguém poderia me ajudar a entender como é realizado este cálculo? Pois só dependo dele para finalizar esta funcionalidade.
Espera um pouco. Como é que você quer fazer o zoom - in (ou seja, aumentar)?
a) Você quer marcar um retângulo na tela. Esse retângulo ocupará a tela inteira.
b) Você quer clicar com o botão esquerdo no centro da área a ser visualizada. A quantidade de zoom irá ser fixa, dependendo de uma configuração do seu programa.
c) Clicar uma escala de zoom e o centro da área a ser visualizada continuará a ser o centro da área visualizada. A quantidade de zoom depende de um spinner ou scrollbar.
Para fazer o zoom out (reduzir), como você quer fazer?
a) Teclar ESC para desfazer o último zoom.
b) Clicar com o botão direito para desfazer o último zoom.
c) Clicar uma escala de zoom e o centro da área a ser visualizada continuará a ser o centro da área visualizada. A quantidade de zoom depende de um spinner ou scrollbar.
E
entanglement
O seu problema é mais ou menos o de fazer uma regra de três, só que com o tal do AffineTransform (e além do mais seu problema é simplificado porque você não está fazendo, no caso do zoom, rotações).
V
vmsb11
entanglement:
Espera um pouco. Como é que você quer fazer o zoom - in (ou seja, aumentar)?
a) Você quer marcar um retângulo na tela. Esse retângulo ocupará a tela inteira.
b) Você quer clicar com o botão esquerdo no centro da área a ser visualizada. A quantidade de zoom irá ser fixa, dependendo de uma configuração do seu programa.
c) Clicar uma escala de zoom e o centro da área a ser visualizada continuará a ser o centro da área visualizada. A quantidade de zoom depende de um spinner ou scrollbar.
Para fazer o zoom out (reduzir), como você quer fazer?
a) Teclar ESC para desfazer o último zoom.
b) Clicar com o botão direito para desfazer o último zoom.
c) Clicar uma escala de zoom e o centro da área a ser visualizada continuará a ser o centro da área visualizada. A quantidade de zoom depende de um spinner ou scrollbar.
Então, para fazer o zoom-in, eu gostaria de fazer igual ao item a), marcar um retângulo e ele aumentar a área selecionada pelo retângulo, e para fazer o zoom-out eu gostaria somente de desfazer o zoom anterior, a minha dificuldade é saber como fazer a translação, pois após o zoom, para o objeto ficar centralizado imagino que eu devo fazer uma translação de x pixels e y pixels até o centro.