Неправильная позиция Android StaticLayout

Моя проблема - нарисовать большой текст в растровом изображении. При использовании StaticLayout текст не начинается с 0,0 позиции. Я вижу, когда использовать статический макет. Вы должны измерить какую-то позицию и перевести на них холст. Но я не понимаю, какую позицию я рассчитываю?

Скриншот


Код

public static Bitmap overlayTest(List<CapsItem> capsList) {
        Bitmap bmOverlay;
        try {

            CapsItem caps = capsList.get(0);
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(context.getContentResolver(), Uri.parse(caps.getItemSrc()));
            bmOverlay =  Bitmap.createBitmap(500, 500, Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(bmOverlay);
            canvas.drawBitmap(bitmap, 0, 0, null);

            TextPaint tp = new TextPaint();
            tp.setColor(Color.WHITE);
            tp.setTextSize(50);
            tp.setTextAlign(Paint.Align.CENTER);
            tp.setAntiAlias(true);

            StaticLayout sl = new StaticLayout(caps.getCapsText(),tp,500, Layout.Alignment.ALIGN_NORMAL,1,0,false);

            Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
            paint.setColor(Color.RED);
            paint.setTextSize(50);
            paint.setStrokeWidth(20);
            paint.setStyle(Paint.Style.FILL);
            Rect rectText = new Rect();

            canvas.drawRect(0,0,500,sl.getHeight(),paint);



            canvas.translate(0,0);
            sl.draw(canvas);


        return  bmOverlay;

        }catch (IOException e){
            e.printStackTrace();
        }
        return null;
    }

0 ответов

Другие вопросы по тегам