2010-01-24 4 views
22

Я пытаюсь нарисовать девяти патчей на объект Canvas на Android. Кажется странным то, что, хотя я сгенерировал девять патчей с помощью инструмента draw9patch, конструктор для NinePatch требует дополнительного байтового массива, называемого «куском» для создания девяти патчей.Рисование девяти патчей на холст (Android)

Почему это не проще? Что такое «кусок»? И если вы сделали это сами, как вы это сделали?

Любая помощь приветствуется.

ответ

73

Вы можете легко сделать это таким образом:

// 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

Но мне нужно изображение, чтобы соответствовать определенный размер. В противном случае я бы не использовал девять патчей. –

+7

В приведенном выше коде объект 'd' на самом деле является экземпляром NinePatchDrawable, поскольку вы дали getDrawable идентификатор ресурса 9patch. Таким образом, вы можете сделать NinePatchDrawable npd = (NinePatchDrawable) d; Не будет ли это работать для ваших целей? –

+0

Просто попробовал: отлично работает. Большое спасибо –

Смежные вопросы