Comment déterminer le facteur d'échelle après le zoom. J'utilise le code ci-dessous pour le zoom de pincement. Après le zoom, je dois dessiner un cercle sur l'image au bon endroit. J'ai entendu cela la formule que nous devons utiliser pour dessiner au point correct après le zoom.Comment déterminer le facteur d'échelle en android
Formule:
float x = ev.getX()/mScaleFactor + rect.left;
float y = ev.getY()/mScaleFactor + rect.top;
Je ne sais pas comment calculer mScaleFactor.
J'utilise ci-dessous le code pour le zoom de pincement,
public boolean onTouch(View v, MotionEvent rawEvent) {
WrapMotionEvent event = WrapMotionEvent.wrap(rawEvent);
// ...
ImageView view = (ImageView) v;
// Dump touch event to log
dumpEvent(event);
// Handle touch events here...
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
savedMatrix.set(matrix);
start.set(event.getX(), event.getY());
Log.d(TAG, "mode=DRAG");
mode = DRAG;
break;
case MotionEvent.ACTION_POINTER_DOWN:
oldDist = spacing(event);
Log.d(TAG, "oldDist=" + oldDist);
if (oldDist > 10f) {
savedMatrix.set(matrix);
midPoint(mid, event);
mode = ZOOM;
Log.d(TAG, "mode=ZOOM");
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
mode = NONE;
Log.d(TAG, "mode=NONE");
break;
case MotionEvent.ACTION_MOVE:
if (mode == DRAG) {
// ...
matrix.set(savedMatrix);
matrix.postTranslate(event.getX() - start.x,
event.getY() - start.y);
}
else if (mode == ZOOM) {
float newDist = spacing(event);
Log.d(TAG, "newDist=" + newDist);
if (newDist > 10f) {
matrix.set(savedMatrix);
float scale = newDist/oldDist;
matrix.postScale(scale, scale, mid.x, mid.y);
}
}
break;
}
view.setImageMatrix(matrix);
return true; // indicate event was handled
}
J'utilise imageview pour afficher l'image et le zoom. Utilisation du canevas et du bitmap Je dessine le cercle et le réglage sur la vue de l'image après le dessin.
Comment calculer le facteur d'échelle pour le code de zoom de pincement ci-dessus?
Merci d'avance.