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.
Anda bisa mendapatkan koordinat menggunakan getPanX
dan getPanY
.
Anda bisa mendapatkan koordinat menggunakan
getPanX
dangetPanY
.
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 menggunakanrealZoom
agar aman.Jadi Anda memerlukan
panX
ataupanX * 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
danpanY
.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.
Komentar yang paling membantu
Markus benar, tetapi alih-alih
zoom
Anda harus menggunakanrealZoom
agar aman.Jadi Anda memerlukan
panX
ataupanX * 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
danpanY
.Anda juga dapat menggunakan
engine.addListener()
untuk menerima panggilan balik.