Пожалуйста, помогите мне нарисовать текст с закругленным прямоугольником в качестве фона. Мне нужно нарисовать много текстов на холсте, и у текста закругленный фон. Итак, я пытаюсь написать функцию 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 в растровое изображение? и изображение имеет размер рамки текста, которые выглядят как
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;
}
Поэтому идея состоит в том, чтобы просто передать растровое изображение на холст, нарисуйте с помощью холста, оно будет нарисовано в вашем растровом изображении.
И обратитесь к этому ответу здесь, чтобы узнать, как бороться с размер текста в растровом изображении.
И, пожалуйста, дайте мне обратную связь
Надеюсь, это поможет .
Вы можете создать растровое изображение, а затем вызвать рисование на этом растровом изображении, примерно так:
newBitmap = Bitmap.createBitmap(rect.width, rect.height, Bitmap.Config.ARGB_8888);
Canvas canvas2 = new Canvas(newBitmap);
Похожие вопросы
Связанные вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.