Android 位图调整为中心文本
Android Bitmap adjust to Center Text
我正在使用以下函数从文本中获取位图。
我无法将文本定位在位图的中心。
将以下所有情况居中的单一规则。
"I"
"W"
"WM"
"IQ"
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;
}
请忽略使用的函数和变量的命名差异方式。
经过一整天的努力,我得到了这个文本中心。
在下面的帮助下 link
这是为了帮助所有我不想像我一样挣扎的人。
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;
}
我正在使用以下函数从文本中获取位图。 我无法将文本定位在位图的中心。 将以下所有情况居中的单一规则。
"I" "W" "WM" "IQ"
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;
}
请忽略使用的函数和变量的命名差异方式。
经过一整天的努力,我得到了这个文本中心。
在下面的帮助下 link
这是为了帮助所有我不想像我一样挣扎的人。
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;
}