Android canvas.scale (-1,1)

Así que mi objetivo es voltear una imagen horizontalmente y luego dibujar en un lienzo. Actualmente estoy usando canvas.scale (-1,1) que efectivamente funciona y dibuja la imagen horizontalmente, sin embargo también se atornilla con los valores del eje x donde antes de la escala la posición x sería 150 y después de que tendría que cambiar A -150 para hacer en el mismo lugar.

Mi pregunta es, ¿cómo puedo hacer que el valor x sea 150 en ambos casos sin tener que ajustar la posición x después de la escala? ¿Hay una manera más eficaz de hacer esto sin tener un éxito en el rendimiento?

Sé que esta pregunta es vieja, pero sucedió topar con el mismo problema. En mi situación, tuve que voltear el lienzo al dibujar en una clase extendiendo un ImageButton. Afortunadamente, la solución para este caso específico fue más elegante de lo que pensaba. Simplemente anule el onDraw(Canvas) siguiente manera:

 @Override protected void onDraw(final Canvas canvas) { // Scale the canvas, offset by its center. canvas.scale(-1f, 1f, super.getWidth() * 0.5f, super.getHeight() * 0.5f); // Draw the button! super.onDraw(canvas); } 

He arreglado esto mediante la aplicación de la transformación en el mapa de bits antes de utilizarlo de esta manera:

 public void applyMatrix(Matrix matrix) { mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(), mBitmap.getHeight(), matrix, true); } ... Matrix matrix = new Matrix(); matrix.preScale(-1, 1); mSprite.applyMatrix(matrix); 

¿Has intentado repetir el canvas.scale(-1, 1) ? Eliminará efectivamente la transformación, ya que dos aspectos negativos son positivos.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.