2010-01-24 12 views
22

Estoy tratando de dibujar un parche nueve en un objeto Canvas en el Android. Lo que parece extraño es que, aunque genere mi parche nueve utilizando la herramienta draw9patch, el constructor de NinePatch requiere una matriz adicional de bytes llamada "fragmento" para construir el parche nueve.Dibujando Nueve Parches en Lienzo (Android)

¿Por qué no es esto más simple? ¿Cuál es el "pedazo"? Y si lo has hecho tú mismo, ¿cómo lo hiciste?

Cualquier ayuda apreciada.

Respuesta

73

usted puede hacer fácilmente de esta manera:

// Load the image as a NinePatch drawable 
NinePatchDrawable npd = (NinePatchDrawable)Resources.getDrawable(R.drawable.my_nine_patch); 

// Set its bound where you need 
Rect npdBounds = new Rect(...); 
npd.setBounds(npbBounds); 

// Finally draw on the canvas 
npd.draw(canvas); 
+0

pero necesito la imagen para ajustarla a un tamaño específico. De lo contrario, no usaría un parche de nueve. –

+7

En el código que coloqué arriba, el objeto 'd' es en realidad una instancia de NinePatchDrawable ya que le dio a getDrawable el ID de un recurso de 9patches. Entonces podría hacer NinePatchDrawable npd = (NinePatchDrawable) d; ¿Eso no funcionará para tus propósitos? –

+0

Acabo de probarlo: funciona a la perfección. Muchas gracias –

Cuestiones relacionadas