2017-05-18 4 views
0

Ich verwende unten Funktion, Bitmap aus Text zu erhalten. Ich kann den Text nicht in der Mitte der Bitmap positionieren. Eine einzige Regel für alle folgenden Fälle, die zentriert werden sollen.Android Bitmap anpassen, um Text zentrieren

"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; 
} 

Bitte ignorieren Sie die diff Art und Weise verwendet, um die Funktionen und Variablen zu benennen.

Antwort

1

Nach einem vollen Tag des Kampfes bekam ich dieses Text Center.
Mit Hilfe der untenstehenden Link
https://stackoverflow.com/a/32081250/5078763

Das ist alles zu helfen, den ich nicht wie ich kämpfen wollen.

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; 
}