Пожалуйста, помогите мне нарисовать текст с закругленным прямоугольником в качестве фона. Мне нужно нарисовать много текстов на холсте, и у текста закругленный фон. Итак, я пытаюсь написать функцию createTextBitmap, которая возвращает растровое изображение, чтобы мы могли рисовать изображение (которое возвращается функцией) на основном холсте. функция createTextBitmap может возвращать созданное растровое изображение, растровое изображение - это то изображение, которое содержит текст с закругленным фоном края ...

Я пробовал один, который приведен ниже.

 private Bitmap ProcessingBitmap(String text,Paint paint, boolean lastPoint){
    Bitmap bm1 = null;
    Bitmap newBitmap = null;

    Rect bounds = new Rect();
    paint.getTextBounds(text, 0, text.length(), bounds);
    float width = bounds.width();
    float height =bounds.height();
    float radius;
    if (width > height){
        radius = height/4;
    }else{
        radius = width/4;
    }
    Paint paint1 = new Paint();
    paint1.setColor(Color.GREEN);
    paint1.setStrokeWidth(5);   
    paint1.setStyle(Paint.Style.FILL);
    float center_x, center_y;
    center_x = width/4;
    center_y = height/4;
    final RectF rect = new RectF();
    rect.set(center_x - radius, 
            center_y - radius, 
            center_x + radius, 
            center_y + radius);
    Canvas canvas2 = new Canvas();
    canvas2.drawRoundRect(rect, 0, 0, paint);
    canvas2.drawText(text, 0, 0, paint);
    return newBitmap;
     }

И мой вопрос: как мы можем преобразовать этот холст2 в растровое изображение? и изображение имеет размер рамки текста, которые выглядят как образец, который мне нужен

0
ranjith 24 Фев 2014 в 09:47

2 ответа

Лучший ответ

Чтобы преобразовать холст в растровое изображение, сделайте следующее:

public Bitmap convertCanvasToBitmap(int width , int height) {
        Bitmap drawnBitmap = null;

        try {
            drawnBitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);

            Canvas canvas = new Canvas(drawnBitmap);
// now draw anything you want to the canvas 
        } catch (Exception e) {
            e.printStackTrace();
        }
        return drawnBitmap;
}

Поэтому идея состоит в том, чтобы просто передать растровое изображение на холст, нарисуйте с помощью холста, оно будет нарисовано в вашем растровом изображении.

И обратитесь к этому ответу здесь, чтобы узнать, как бороться с размер текста в растровом изображении.

И, пожалуйста, дайте мне обратную связь

Надеюсь, это поможет .

1
Community 23 Май 2017 в 15:28
Ох ... но этот размер слишком велик, да? здесь размер 400X400 .. мне нужен размер растрового изображения в зависимости от размера текста ...
 – 
ranjith
24 Фев 2014 в 10:35
Вы меняете размер как хотите
 – 
user957654
24 Фев 2014 в 10:36
Но как мы получаем ширину и высоту из текста, я использовал объект Rect, чтобы получить границы, но он не работает
 – 
ranjith
24 Фев 2014 в 10:39
Ваш вопрос в том, как преобразовать этот холст2 в растровое изображение, а не как получить ширину и высоту из текста
 – 
user957654
24 Фев 2014 в 10:46
Извините за путаницу, мой точный вопрос задается вопросом, как преобразовать холст2 в растровое изображение, но мне нужно это растровое изображение с ограниченным размером, а не как 400X400
 – 
ranjith
24 Фев 2014 в 10:47

Вы можете создать растровое изображение, а затем вызвать рисование на этом растровом изображении, примерно так:

newBitmap = Bitmap.createBitmap(rect.width, rect.height, Bitmap.Config.ARGB_8888);
Canvas canvas2 = new Canvas(newBitmap);
1
bladefury 24 Фев 2014 в 10:21
Дааа, я пробовал это. но который очень маленький, как точка.
 – 
ranjith
24 Фев 2014 в 10:26
Мне нужно нарисовать растровое изображение с заданным текстом, так как изображение требует ширины и высоты в зависимости от длины текста ...
 – 
ranjith
24 Фев 2014 в 10:28
Вам нужно сначала измерить текст и создать растровое изображение в соответствии с измеренным размером, а затем нарисовать на холсте, на каком этапе вы застряли?
 – 
bladefury
24 Фев 2014 в 11:03