我已經做了幾個測試來定位文本在畫布上給定的位置,並得出結論,drawText()不能正常工作。 (我的示例代碼和屏幕截圖將顯示。)如果可能,請給我一個建議如何解決這個問題。如何讓drawText()精確定位?
如果有任何文字(在我的例子中只是「123」),我可以正確地獲得文本的大小。但是,定位(主要是水平)不準確。更糟糕的是,這種現象與所有人物並不相同。例如。如果文本以「A」開始,則按預期工作。
我從截圖中附加了兩個區域。具有「123」的那個顯示文本如何向右偏移。具有「A12」的那個顯示了定位正確時的外觀。我的代碼繪製了一個灰色的控制矩形,並給出了文本的尺寸。人們應該期望文本恰好出現在這個框架中。但事實並非如此。有這個問題,不可能準確地設置圖紙中的任何文字。
package com.pm.pmcentertest;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.View;
public class Draw extends View {
public Paint myPaint;
public Draw(Context context) {
super(context);
myPaint = new Paint();
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.CYAN);
// The text shall appear in the lower left corner
int x = 0;
int y = canvas.getHeight();
// We use a large text size for demonstration
String Text = "123";
myPaint.setTextSize(400);
// We get the dimensions of the text
Rect bounds = new Rect();
myPaint.getTextBounds(Text, 0, Text.length(), bounds);
// Now we draw a rectangle for the area in which the text should appear
// using the TextBounds values
myPaint.setColor(Color.parseColor("GREY"));
canvas.drawRect(x, y - bounds.height(), x + bounds.width(), y, myPaint);
// Now we draw the text to the same position
myPaint.setColor(Color.parseColor("WHITE"));
canvas.drawText(Text, x, y, myPaint);
}
}
Positive example when start with A
你想達到什麼目的? –