【问题标题】:Draw scaled TextView on Bitmap在位图上绘制缩放的 TextView
【发布时间】:2015-03-26 00:27:34
【问题描述】:

我想将文本绘制到缩放的位图上。

我有一个真实的布局,我可以在其中拖放 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 与相对布局的位置不同。

我做错了什么?

【问题讨论】:

    标签: android bitmap textview scale


    【解决方案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);
    

    【讨论】:

    • 是的,这是个好主意,但它也适用于低分辨率显示器吗?
    • @user1948160 不,不应该放大位图。但也许你仍然可以使用屏幕外视图来绘制它。
    猜你喜欢
    • 2012-10-18
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 2011-11-08
    • 2011-07-05
    • 1970-01-01
    相关资源
    最近更新 更多