Zoom en un lienzo utilizando la función canvas.scale?

He implementado un largo método onDraw que dibuja un conjunto de rectángulos. Los rectángulos son demasiado pequeños y quiero que parezcan más grandes. Pero desafortunadamente no puedo cambiar las coordenadas del rectángulo porque están almacenadas en una base de datos. Entonces, ¿hay alguna manera de que pueda ampliar el lienzo usando canvas.scale() ?

Voy a preámbulo esta respuesta diciendo que usted necesitará dibujar todo en 0,0 y después escalarlo, y finalmente traducirlo para comportarse correctamente.

Simplemente haga lo siguiente en su método onDraw:

 canvas.save(); canvas.translate(xValue, yValue); canvas.scale(xScale, yScale) /* draw whatever you want scaled at 0,0*/ canvas.restore(); 

XScale se encoge o se estira en la dirección X, yScale se encoge o se estira en la dirección Y.

1.0 es el valor por defecto para estos, por lo que 2.0 se estira por doble y 0.5 se redujo a la mitad.

Ejemplo:

 canvas.save(); canvas.translate(50, 50); canvas.scale(0.5f, 0.5f); canvas.drawRect(0.0, 0.0, 5.0, 5.0, paint); canvas.restore(); 

Esto dibujará un rectángulo con longitud 5,0 y ancho 5,0, escala hasta 2,5 para longitud y ancho, y luego moverlo a (50, 50).

El resultado será un rectángulo dibujado como si lo hiciera:

 canvas.drawRect(50.0, 50.0, 52.5, 52.5, paint); 

¡Espero que esto ayude!

  • ¿Cómo puedo hacer que un SurfaceView sea más grande que la pantalla?
  • Galería de Android: reemplaza el mapa de bits en ImageView después de que el desplazamiento se detuvo
  • Activar / desactivar el zoom en Android WebView
  • Pinch de la vista web de Android zoom local image
  • Cámara android cámara2 manejar zoom
  • Zoom Vista previa de Camera2 con TextureView
  • Android pinch / zoom y glfrustum
  • ¿Cómo hacer que mi ImageView se pueda ampliar?
  • Google Maps v2 Establecer nivel de zoom
  • Pinch Ampliar la vista web
  • Cómo eliminar los botones de zoom en la vista web de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.