2013-02-18 3 views
3

Я буду работать над приложением, которое требует перетаскивания на Canvas. В принципе, я хочу взять ShapeDrawable и преобразовать его в Bitmap, который я могу заставить пользователя перетащить по экрану. Это простое упражнение само по себе.Создание растрового изображения из drawable

Однако, я хочу добавить текст в свою форму. Есть ли способ добавить текст к самому drawable, а затем преобразовать в растровое изображение? Я задумал создать TextView с возможностью рисования в качестве фона.

Это лучший способ сделать это? Я вроде хочу избежать создания TextViews в моем коде. Любые советы приветствуются.

Edit 2/21/2013:

В ответ на пост JustDanyul, я следующий код:

int width = 40; 
int height = 40; 
Bitmap.Config config = Bitmap.Config.ARGB_8888; 
bitmap = Bitmap.createBitmap(width, height, config); 
Canvas canvas = new Canvas(bitmap); 
Resources res = context.getResources(); 
Drawable shape = res.getDrawable(R.drawable.miss_scarlet); 
shape.draw(canvas); 
Paint paint = new Paint(); 
paint.setTextSize(fontSize); 
paint.setColor(Color.BLACK); 
canvas.drawText(gameToken.getDbName(), 5, 5, paint); 

Моей вытяжка не появляется, когда я рисую растровое изображение на другой холст. Выбираемая сама по себе прекрасна (я тестировал ее как фон для TextView). Появится текст. Я что-то пропустил в этом коде?

<?xml version="1.0" encoding="utf-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <corners 
     android:radius="4dp" /> 
    <solid 
     android:color="#FF0000" /> 
    <stroke 
     android:width="3dp" 
     android:color="#000000" /> 
</shape> 

Edit # 2 2/21/2013:

Я добавил:

shape.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight()); 

в мой код и теперь вытяжке появляется, но мой текст ушел (или просто скрытый).

+0

shape.setBounds (0, 0, bitmap.getWidth(), bitmap.getHeight()); разрешил мою проблему. Спасибо – ajay

ответ

3

Я хотел бы предложить вам попробовать что-то вроде этого, во-первых, создать пустой растр

int w = 500 
int h = 500; // or whatever sizes you need 
Bitmap.Config config = Bitmap.Config.ARGB_8888; 
Bitmap bitmap = Bitmap.createBitmap(w, h, config); 

Следующий шаг, создать новый экземпляр холст, который визуализирует на вновь созданный растровые

Canvas canvas = new Canvas(bitmap); 

Теперь вы можете нарисовать ShapeDrawable на свой пустой битовой карты с использованием метода нарисуйте ShapeDrawable в

myshapedrawable.draw(canvas); 

Наконец, вы можете использовать метод drawText экземпляра canvas для рисования вашего текста на холсте.

+0

это добавит shape.setBounds (0, 0, bitmap.getWidth(), bitmap.getHeight()); для «Shape in xml» специально иначе не будет работать – ajay