je suis en utilisant ce code à l'échelle ma toile autour d'un point de focalisationcomment l'échelle en utilisant la toile
private class MyScaleDetector
extends ScaleGestureDetector.SimpleOnScaleGestureListener {
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
float focusx=detector.getFocusX();
float focusy=detector.getFocusY();
return super.onScaleBegin(detector);
}
@Override
public boolean onScale(ScaleGestureDetector detector) {
float factor=detector.getScaleFactor();
scale *= factor;
scale = Math.max(0.4f, Math.min(scale, 20.0f));
return true;
}
}
ce qui est le code que je l'utilise à l'échelle dans la méthode OnDraw
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.scale(scale,scale,focusx,focusy);
}
mon problème C'est quand je commence à redimensionner autour du point de mise au point (200, 200) par exemple, au début, il commence à aller là, mais que, tout en augmentant l'échelle, il commence à s'éloigner du point. Mon problème est donc comment je redimensionne vers un point spécifique de sorte que ce point devient le centre de la fenêtre lors de la mise à l'échelle.
Je pense que je devrais utiliser canvas.translate() avec lui mais je ne sais pas combien je devrais déplacer la position x et y du canevas pendant la mise à l'échelle.
Edit: l'image ci-dessous résume ce que je suis en train de dire
thx pour les détails mais vous n'avez pas mentionné comment mettre à l'échelle un point spécifique qui pose problème, je sais déjà combien d'échelle et cela fonctionne bien, je l'ai testé pour mettre à l'échelle le milieu de l'écran et ça marche très bien mais si je balance autour d'un autre point ça commence là au début de la mise à l'échelle mais ça commence à partir du point, comme tu peux le voir je dois trouver un moyen pour que je puisse faire ce point le centre de la fenêtre pendant la mise à l'échelle – hm9
Vous mettez à l'échelle un point spécifique exactement comme vous l'avez fait. Pour s'assurer que ce point reste visible, c'est un peu plus de travail, voir ma réponse mise à jour – RabidMutant