Android位图调整为中心文本

Posted

技术标签:

【中文标题】Android位图调整为中心文本【英文标题】:Android Bitmap adjust to Center Text 【发布时间】:2017-10-18 20:01:38 【问题描述】:

我正在使用以下函数从文本中获取位图。 我无法将文本定位在位图的中心。 将以下所有案例集中在一起的单一规则。

“我” “W” “WM” “智商”

Bitmap DevImjBitmapFrmTxtFnc(String TxtSrgPsgVal)

    int TxtSyzVal = 100;
    Paint PenPytVaj = new Paint(ANTI_ALIAS_FLAG);
    PenPytVaj.setTextSize(TxtSyzVal);
    PenPytVaj.setColor(Color.BLUE);
    PenPytVaj.setTextAlign(Paint.Align.CENTER);

    float TxtTitYcoVal = -PenPytVaj.ascent(); // ascent() is negative
    int ImjWytVal = (int) (PenPytVaj.measureText(TxtSrgPsgVal) + 0.0f); // round
    int ImjHytVal = (int) (TxtTitYcoVal + PenPytVaj.descent() + 0.0f);
    Bitmap ImjBitmapVaj = Bitmap.createBitmap(ImjWytVal + TxtSyzVal, ImjHytVal + TxtSyzVal, Bitmap.Config.ARGB_8888);

    Canvas ImjCanvasVaj = new Canvas(ImjBitmapVaj);
    ImjCanvasVaj.drawText(TxtSrgPsgVal, 0, TxtTitYcoVal, PenPytVaj);
    return ImjBitmapVaj;

请忽略使用的函数和变量命名方式的差异。

【问题讨论】:

【参考方案1】:

经过一整天的努力,我得到了这个文本中心。 借助以下链接https://***.com/a/32081250/5078763

这是为了帮助所有我不想像我一样挣扎的人。

Bitmap DevImjBmpFrmTxtFnc(String TxtSrgPsgVal)

    int TxtSyzVal = 100;
    TextPaint PenPytVaj = new TextPaint(ANTI_ALIAS_FLAG);
    PenPytVaj.setTextSize(TxtSyzVal);
    PenPytVaj.setColor(Color.BLACK);
    PenPytVaj.setTextAlign(Paint.Align.LEFT);

    Rect TxtRctVar = new Rect();
    PenPytVaj.getTextBounds(TxtSrgPsgVal, 0, TxtSrgPsgVal.length(), TxtRctVar);
    Bitmap TxtImjBmpVar = Bitmap.createBitmap(TxtSyzVal * 2, TxtSyzVal * 2, Bitmap.Config.ARGB_8888);

    Canvas ImjCanvasVaj = new Canvas(TxtImjBmpVar);
    float XcoVal = ImjCanvasVaj.getWidth() / 2 - TxtRctVar.width() / 2  - TxtRctVar.left;
    float YcoVal = ImjCanvasVaj.getHeight() / 2 + TxtRctVar.height() / 2  - TxtRctVar.bottom;
    ImjCanvasVaj.drawText(TxtSrgPsgVal, XcoVal, YcoVal, PenPytVaj);
    return TxtImjBmpVar;

【讨论】:

以上是关于Android位图调整为中心文本的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何将整个 ImageView 转换为位图?

在可绘制图层列表中调整位图大小

Android:将文本绘制为动态大小的位图

如何在 Android 中调整位图的大小?

在android上调整位图大小的最节省内存的方法?

Android,围绕自我中心旋转位图而不缩放它