Zoomlayout: Dapatkan koordinat yang dapat digambar

Dibuat pada 15 Feb 2019  ·  10Komentar  ·  Sumber: natario1/ZoomLayout

Hai,

Terima kasih banyak telah bekerja keras untuk perpustakaan yang luar biasa ini. Saya cukup puas dengan hasil dan API, Namun, saya ingin mendapatkan koordinat X dan Y dari drawable di dalam ZoomImageView karena saya menggambar beberapa lingkaran di atas ZoomImageView dan saya ingin mereka bergerak bersama drawable (setelah zoom juga). Pikirkan tentang masalahnya karena Anda memiliki peta (ZoomImageView) dan di atasnya Anda memiliki beberapa pin yang harus dipertahankan pada posisi relatif yang sama ketika pengguna memperbesar/memperkecil atau menggeser tampilan. Bantuan apapun akan sangat dihargai.

Terima kasih.

question stale

Komentar yang paling membantu

Markus benar, tetapi alih-alih zoom Anda harus menggunakan realZoom agar aman.

Jadi Anda memerlukan panX atau panX * realZoom (atau dikurangi ini, tergantung pada perhitungan Anda). Itu tergantung pada bagaimana Anda menggambar ini.

Juga tergantung pada bagaimana Anda menggambar, Anda mungkin harus mempertimbangkan hal-hal lain, seperti ukuran layar / ukuran wadah. Pada akhirnya, ini murni masalah matematika, pastikan untuk memahami apa itu panX dan panY .

Anda juga dapat menggunakan engine.addListener() untuk menerima panggilan balik.

Semua 10 komentar

Anda bisa mendapatkan koordinat menggunakan getPanX dan getPanY .

Anda bisa mendapatkan koordinat menggunakan getPanX dan getPanY .

ini akan berhasil tetapi mendapatkan panci tidak mempertimbangkan faktor skala zoom. Saya percaya sistem koordinat akan diperkuat saat memperbesar. Apakah ada cara lain untuk melakukannya sehubungan dengan faktor zoom dan skala?

Saya pikir Anda bisa mengalikannya dengan properti zoom .

Saya pikir Anda bisa mengalikannya dengan properti zoom .

Tidak akurat karena mendapatkan zoom dan melakukan perkalian tidak akan mempertimbangkan pivot pusat zoom (tempat pinch terjadi) sehingga ini akan menerjemahkan semua koordinat secara linier berdasarkan posisi default pivot. Saya mencoba mengatur ulang pivot X dan Y pada posisi mencubit tetapi saya tidak berhasil.

Mengapa titik pivot cubitan penting ketika tampilan di atas tata letak zoom memiliki posisi tetap relatif terhadapnya? Bukankah seharusnya cukup untuk memindahkan tampilan di atas seperti tata letak zoom tetapi sebaliknya? Ketika tata letak zoom diperbesar (yaitu zoom > 1) terjemahan tampilan di atas akan perlu lebih kecil dari ukuran piksel asli karena seperti yang Anda katakan, koordinat tata letak zoom akan diperkuat (dari atas kepala saya, saya akan berpikir Anda hanya perlu membagi panci dengan faktor zoom).

Mengapa titik pivot cubitan penting ketika tampilan di atas tata letak zoom memiliki posisi tetap relatif terhadapnya? Bukankah seharusnya cukup untuk memindahkan tampilan di atas seperti tata letak zoom tetapi sebaliknya? Ketika tata letak zoom diperbesar (yaitu zoom > 1) terjemahan tampilan di atas akan perlu lebih kecil dari ukuran piksel asli karena seperti yang Anda katakan, koordinat tata letak zoom akan diperkuat (dari atas kepala saya, saya akan berpikir Anda hanya perlu membagi panci dengan faktor zoom).

Saat menggunakan pan dan zoom, pin tata letak superposisi (di atas zoomLayout) ditransposisikan pada diagonal sebagai transpos linier. Apa yang ingin saya katakan di sini adalah bahwa beberapa kali Anda mencubit pada posisi di mana pin berada, oleh karena itu yang terakhir ini tidak boleh transpose sama sekali tetapi dalam kasus saya apakah mengalikan atau membaginya hanya berjalan secara diagonal. Selain semua itu saya pikir perpustakaan ini membutuhkan beberapa panggilan balik untuk ditambahkan seperti "onZoomUpdate -> zoom: Float" dan "onViewPanUpdate -> float[x,y]"

Markus benar, tetapi alih-alih zoom Anda harus menggunakan realZoom agar aman.

Jadi Anda memerlukan panX atau panX * realZoom (atau dikurangi ini, tergantung pada perhitungan Anda). Itu tergantung pada bagaimana Anda menggambar ini.

Juga tergantung pada bagaimana Anda menggambar, Anda mungkin harus mempertimbangkan hal-hal lain, seperti ukuran layar / ukuran wadah. Pada akhirnya, ini murni masalah matematika, pastikan untuk memahami apa itu panX dan panY .

Anda juga dapat menggunakan engine.addListener() untuk menerima panggilan balik.

Markus benar, tetapi alih-alih zoom Anda harus menggunakan realZoom agar aman.

Jadi Anda memerlukan panX atau panX * realZoom (atau dikurangi ini, tergantung pada perhitungan Anda). Itu tergantung pada bagaimana Anda menggambar ini.

Juga tergantung pada bagaimana Anda menggambar, Anda mungkin harus mempertimbangkan hal-hal lain, seperti ukuran layar / ukuran wadah. Pada akhirnya, ini murni masalah matematika, pastikan untuk memahami apa itu panX dan panY .

Anda juga dapat menggunakan engine.addListener() untuk menerima panggilan balik.

Kedengarannya bagus saya akan mencobanya. Terima kasih banyak

@andromedcodes apakah Anda bisa mendapatkan koordinat drawable yang benar di dalam ZoomImageView?

Inilah yang saya coba:

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);

Tapi saya tidak mengerti bagaimana mengatur nilai pan dan zoom di sana. Bantuan apa pun akan dihargai. Terima kasih

Masalah ini secara otomatis ditandai sebagai basi karena tidak memiliki aktivitas dalam 20 hari terakhir. Itu akan ditutup jika tidak ada aktivitas lebih lanjut yang terjadi dalam tujuh hari ke depan. Terima kasih atas kontribusi Anda.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

MohamedMedhat1998 picture MohamedMedhat1998  ·  6Komentar

Yahor10 picture Yahor10  ·  5Komentar

natario1 picture natario1  ·  13Komentar

YiHaoHuang picture YiHaoHuang  ·  10Komentar

wakaztahir picture wakaztahir  ·  5Komentar