Я пытаюсь создать Прямоугольник вокруг текста, этот текст нарисован внутри холста. Также есть изображение внутри холста. Вот код для рисования текста внутри изображения, но я не могу получить позицию Прямоугольник вправо. Вот одна строка, где мне нужна помощь canvas.drawRect (HELLLLLLLLLLLLLPPPPPPPPPPPPPP);Как нарисовать прямоугольник вокруг текста внутри холста
> > public Bitmap drawTextOnBitmap(Context context, int resId, String
> > text) {
> > // void drawRect(float left, float top, float right, float bottom, Paint paint)
> > // prepare canvas
> > int offset=10;
> > Resources resources = context.getResources();
> > float scale = resources.getDisplayMetrics().density;
> > Bitmap bitmap = BitmapFactory.decodeResource(resources, resId);
> >
> > android.graphics.Bitmap.Config bitmapConfig = bitmap.getConfig();
> > // set default bitmap config if none
> > if (bitmapConfig == null) {
> > bitmapConfig = android.graphics.Bitmap.Config.ARGB_8888;
> > }
> > // resource bitmaps are immutable, so we need to convert it to mutable one
> > bitmap = bitmap.copy(bitmapConfig, true);
> > Canvas canvas = new Canvas(bitmap);
> >
> > // new antialiased Paint
> > TextPaint paint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
> > // text color - #3D3D3D
> > paint.setColor(Color.rgb(61, 61, 61));
> > // text size in pixels
> > paint.setTextSize((int) (bitmap.getHeight()/10 * scale));
> > // text shadow
> > paint.setShadowLayer(1f, 0f, 1f, Color.WHITE);
> >
> > // set text width to canvas width minus 16dp padding
> > int textWidth = canvas.getWidth() - (int) (16 * scale);
> >
> > // init StaticLayout for text
> > StaticLayout textLayout = new StaticLayout(text, paint, textWidth,
> > Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false);
> >
> > // get height of multiline text
> > int textHeight = textLayout.getHeight();
> >
> > // get position of text's top left corner
> > float x = (bitmap.getWidth() - textWidth)/2;
> > float y = (bitmap.getHeight() - textHeight)/2;
> > Paint myPaint = new Paint();
> > myPaint.setStyle(Paint.Style.STROKE);
> > myPaint.setColor(Color.rgb(0, 0, 0));
> > myPaint.setStrokeWidth(10);
> > // draw text to the Canvas center
> > canvas.save();
> >
> >
> > canvas.translate(x, y);
> > textLayout.draw(canvas);
> > canvas.drawRect(HELLLLLLLLLLLLPPPPPPPPPPPPPPPP);
> > canvas.restore();
> >
> >
> > // void drawRect(float left, float top, float right, float bottom, Paint paint)
> >
> >
> > return bitmap;
> > }
Это то, что я хочу достичь, и я застрял на создание прямоугольника в нужном месте
@MobileDeveloper Вы бот? –
А? Вы должны быть более конкретными, чтобы получить хорошие ответы. –
@MobileDeveloper Я просто добавил более подробную информацию, вы можете понять это сейчас? –