在位图上绘制缩放的TextView

时间:2015-03-26 00:27:35

标签: android bitmap textview scale

我想将文本绘制为缩放位图。

我有一个实际的布局,我可以拖放TextView。

“保存”按钮创建一个缩放的位图,我想将TextView放在位图上与相对布局相同的位置。

到目前为止,我正在尝试这个:

    Bitmap finalBitmap = Bitmap.createBitmap(postcard.getWidth(), postcard.getHeight(), Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas();
    canvas.setBitmap(finalBitmap);

        Paint p = new Paint();
        p.setColor(fct.getTextColor());
        p.setTextSize(fct.getTextSize());
        p.setTypeface(fct.getFont().getTypeFace(ctx));

        Rect bounds = new Rect();
        p.getTextBounds(fct.getText(), 0, fct.getText().length(), bounds);
        int x = (int) (fct.getPositionX() - bounds.width()/2);
        int y = (int) (bounds.height() + fct.getPositionY());
        canvas.drawText(fct.getText(), x, y, p);

但结果并不好!

TextView并未放置在相对布局的相同位置。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

如果你想要一个与视图完全相同的位图,为什么不在位图上绘制视图呢?

您可以先绘制与视图大小相同的位图,然后缩放位图。

   Bitmap bmp = Bitmap.createBitmap(v.getWidth(), v.getHeight(),
            Config.ARGB_8888);
   v.draw(new Canvas(bmp));
   Matrix matrix = new Matrix();
   matrix.postScale(scale, scale);
   return Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), 
                          matrix, true);