Zoomlayout: Obtenha coordenadas desenhaveis

Criado em 15 fev. 2019  ·  10Comentários  ·  Fonte: natario1/ZoomLayout

Oi,

Muito obrigado por trabalhar duro nesta biblioteca incrível. Estou muito satisfeito com o resultado e a API, no entanto, gostaria de obter as coordenadas X e Y do drawable dentro do ZoomImageView porque desenho alguns círculos no topo do ZoomImageView e gostaria que eles se movessem junto com o drawable (após o zoom também). Pense no problema, pois você tem um mapa (ZoomImageView) e, acima dele, alguns pinos que devem manter a mesma posição relativa quando o usuário aumentar / diminuir o zoom ou panoramizar a visualização. Qualquer ajuda será muito apreciada.

Obrigada.

question stale

Comentários muito úteis

Markus está certo, mas em vez de zoom você deve usar realZoom para estar seguro.

Portanto, ou você precisa de panX ou panX * realZoom (ou menos isso, dependendo de seus cálculos). Depende de como você os está desenhando.

Além disso, dependendo de como você está desenhando, você pode ter que levar outras coisas em consideração, como o tamanho da tela / tamanho do contêiner. No final das contas, é puramente um problema de matemática, apenas certifique-se de entender o que são panX e panY .

Você também pode usar engine.addListener() para receber chamadas de retorno.

Todos 10 comentários

Você pode obter as coordenadas usando getPanX e getPanY .

Você pode obter as coordenadas usando getPanX e getPanY .

isso funcionaria, mas obter o panorama não considera o fator de escala de zoom. Acredito que o sistema de coordenadas é ampliado quando aumenta o zoom. Existe alguma outra maneira de fazer isso em relação ao zoom e ao fator de escala?

Acho que você pode simplesmente multiplicar pela propriedade zoom .

Acho que você pode simplesmente multiplicar pela propriedade zoom .

Não é preciso como obter o zoom e fazer a multiplicação não considerará o pivô central do zoom (onde o aperto está acontecendo), portanto, isso traduziria linearmente todas as coordenadas com base na posição padrão do pivô. Tentei redefinir o pivô X e Y na posição de aperto, mas não tive sorte.

Por que o ponto de pivô da pinça é importante quando as visualizações na parte superior do layout de zoom têm uma posição fixa em relação a ele? Não deveria ser suficiente mover as visualizações na parte superior exatamente como a panorâmica do layout de zoom, mas ao contrário? Quando o layout de zoom é ampliado (ou seja, zoom> 1), a tradução das visualizações no topo precisa ser menor do que o tamanho do pixel original porque, como você disse, as coordenadas do layout de zoom serão amplificadas (no topo da minha cabeça I pensaria que você só precisa dividir o panorama pelo fator de zoom).

Por que o ponto de pivô da pinça é importante quando as visualizações na parte superior do layout de zoom têm uma posição fixa em relação a ele? Não deveria ser suficiente mover as visualizações na parte superior exatamente como a panorâmica do layout de zoom, mas ao contrário? Quando o layout de zoom é ampliado (ou seja, zoom> 1), a tradução das visualizações no topo precisa ser menor do que o tamanho do pixel original porque, como você disse, as coordenadas do layout de zoom serão amplificadas (no topo da minha cabeça I pensaria que você só precisa dividir o panorama pelo fator de zoom).

Ao usar a panorâmica e o zoom, os pinos do layout sobreposto (no topo do zoomLayout) são transpostos na diagonal como uma transposição linear. O que eu quero dizer aqui é que algumas vezes você belisca na posição onde o pino está localizado, portanto, este último não deve transpor de forma alguma, mas no meu caso se multiplicando ou dividindo ele apenas se desloca na diagonal. Além de tudo isso, acho que esta biblioteca precisa de alguns retornos de chamada a serem adicionados, como "onZoomUpdate -> zoom: Float" e "onViewPanUpdate -> float [x, y]"

Markus está certo, mas em vez de zoom você deve usar realZoom para estar seguro.

Portanto, ou você precisa de panX ou panX * realZoom (ou menos isso, dependendo de seus cálculos). Depende de como você os está desenhando.

Além disso, dependendo de como você está desenhando, você pode ter que levar outras coisas em consideração, como o tamanho da tela / tamanho do contêiner. No final das contas, é puramente um problema de matemática, apenas certifique-se de entender o que são panX e panY .

Você também pode usar engine.addListener() para receber chamadas de retorno.

Markus está certo, mas em vez de zoom você deve usar realZoom para estar seguro.

Portanto, ou você precisa de panX ou panX * realZoom (ou menos isso, dependendo de seus cálculos). Depende de como você os está desenhando.

Além disso, dependendo de como você está desenhando, você pode ter que levar outras coisas em consideração, como o tamanho da tela / tamanho do contêiner. No final das contas, é puramente um problema de matemática, apenas certifique-se de entender o que são panX e panY .

Você também pode usar engine.addListener() para receber chamadas de retorno.

Parece bom, vou tentar. Muito obrigado

@andromedcodes você conseguiu obter as coordenadas corretas de drawable dentro do ZoomImageView?

Aqui está o que eu tentei:

ZoomImageView imgScreen;
Matrix m = new Matrix(imgScreen.getImageMatrix());
        Drawable d = imgScreen.getDrawable();
        RectF drawableRect = new RectF(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
        RectF viewRect = new RectF(0, 0, imgScreen.getWidth(), imgScreen.getHeight());
        m.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.CENTER);
        m.invert(m);

        // Convert the points inside the image
        float[] points = new float[2];
        points[0] = event.getX(); //holds x coordinate of drawable
        points[1] = event.getY(); //holds y coordinate of drawable
        m.mapPoints(points);

Mas não entendo como ajustar os valores de panorâmica e zoom aqui. Qualquer ajuda seria apreciada. Obrigado

Este problema foi marcado automaticamente como obsoleto porque não teve atividade nos últimos 20 dias. Ele será fechado se nenhuma outra atividade ocorrer nos próximos sete dias. Obrigado por suas contribuições.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Yahor10 picture Yahor10  ·  5Comentários

kuoliangkwong picture kuoliangkwong  ·  4Comentários

natario1 picture natario1  ·  13Comentários

MohamedMedhat1998 picture MohamedMedhat1998  ·  6Comentários

wakaztahir picture wakaztahir  ·  5Comentários