Unwanted Warp efecto de dibujo de texto en la ruta android

Hago algunas pruebas de dibujo en el camino. Hice una imagen de fondo mediante la configuración de mapa de bits a lienzo. Entonces, dibujo el texto en la trayectoria a la lona, ​​girada por la matriz. Tengo que acortar el código, sólo publicaré la parte importante, porque es demasiado larga. Estas imágenes que se muestran a continuación se recortan con gimp, así que no te irrites por los diferentes tamaños. Mis objetos Rect, Path y Matrix:

RectF drawTextOval; Path drawTextPath; Matrix mDrawnMatrix; 

Ahora, esto es lo que estoy haciendo para dibujar el texto en el camino del círculo:

  drawTextOval.set(drawTextPosX - drawTextArc, drawTextPosY - drawTextArc, drawTextPosX + drawTextArc, drawTextPosY + drawTextArc); drawTextPath.addArc(drawTextOval, 0, 360); drawTextPath.computeBounds(drawTextOval, true); mDrawnMatrix.postRotate(drawTextArcStart, (drawTextOval.right + drawTextOval.left) / 2, (drawTextOval.bottom + drawTextOval.top) / 2); drawTextPath.transform(mDrawnMatrix); patternCanvas.drawTextOnPath(drawText, drawTextPath, 0, 0, mFixedTextPaint); 

Hasta este punto, todo se ve bien:

Introduzca aquí la descripción de la imagen

Pero después de guardar toda la pantalla, el texto girado parece deformado en la imagen .png guardada. Todos los demás componentes se ven bien. Hice algunos otros dibujos con texto, lineal o angular, todo esto funciona. Incluso algunos .png mapas de bits de dibujo a la lona y la imagen de fondo … todo está mirando normalmente. Pero el texto en el camino del círculo dibujado se ve así:

Introduzca aquí la descripción de la imagen

No hago ninguna escala en el mapa de bits, sólo guardar la imagen de lienzo con:

  FileOutputStream fos = new FileOutputStream(saveFile); this.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH); Bitmap bitmap = this.getDrawingCache(); bitmap.compress(CompressFormat.PNG, 100, fos); fos.flush(); fos.close(); 

¿Por qué el texto parece deformado? ¿Alguien ha visto mi error? Gracias por adelantado….

EDITAR

He probado algunas cosas y averiguar que establecer anyDensity a false o desactivar la aceleración de hardware en Manifest mostrará el efecto en tiempo de ejecución antes de guardar. Eso me sugiere, que al guardar bitmap con getDrawingCache (), la escala está desactivada en este momento. ¿Pero por qué?

Lo último que descubrí, que cuanto más baja es la curvatura, más baja es la escala del texto. Si el texto es un poco curvado, parece bueno.

Introduzca aquí la descripción de la imagen

Intento establecer el

 this.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH); 

antes de dibujar a pantalla, ya que una menor calidad podría implicar una transformación más simple del texto. Esto es sólo adivinar, por supuesto. Actualmente su único ajuste de la alta calidad antes de escribir en el disco. O simplemente eliminarlo del método write to disk para comprobar si afecta la forma en que se dibuja el texto.

  • Crear triángulo con cornors redondeados
  • Centrar el texto en el círculo
  • Android: ¿Cómo hacer esta pintura enmarcada?
  • Android: buscando un método drawArc () con radio interior y exterior
  • Cómo esbozar un TextView?
  • Dibujo de un pulgar hueco redondeado sobre arco
  • Un método más eficiente de dibujar miles de partículas (Java / Android)
  • ¿Cómo hacer que cualquier vista dibuje a la lona?
  • Error de procesamiento de OpenGL ES
  • Explicación del ejemplo de JetBoy para dev.android.com?
  • Cómo dibujar una ruta entre dos geopuntos en el Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.