2011-06-11 19 views
5

所以我用Canvas.drawTextCanvas上畫一些字符串。問題是我想在它之前畫一個矩形,以便文本出現在矩形的中心。但是我遇到了一個真正的問題。所提供的Xÿ座標的drawText實際上是不是「左上方」真實文本的角落,而是在哪裏字符開頭的行。有一種方法Paint.getTextBounds它將返回一個矩形「暗含原點」(0,0)將被繪製的文本。問題是,原點在(0,0)。該框的寬度和高度是正確的,但我不知道如何將其左上角放置在畫布上繪製的字符串的左上角。我想我應該使用FontMetrics,但由於很多值FontMetrics返回沒有記錄我真的不知道如何將它們用於我的目的。在Android Canvas上圍繞一個字符串安裝一個矩形

回答

12

我落得這樣做

FontMetrics fm = new FontMetrics(); 
paint.setTextAlign(Paint.Align.CENTER); 
paint.getFontMetrics(fm); 
canvas.drawText(text, x, y + -(fm.ascent + fm.descent)/2, paint); 

裏面居然平在X中心的文本,ÿ。在此之前,我畫在X爲中心的矩形,ÿ與寬度paint.measureText(文本

+0

我一直在努力繪製矩形中心的文本一段時間。非常感謝你! – 2011-08-29 11:10:55

1

嘗試繪製矩形使用

canvas.drawRect(x, y - Paint.GetTextSize(), x + Paint.measureText("text"), y, Paint);

+0

我認爲這會工作,但最後我做另外一件事也爲我工作所以現在我無法嘗試查看此方法是否有效。謝謝你:) – 2011-06-12 16:25:35

+0

這是什麼x和y? – ranjith 2014-02-21 09:09:42

+0

在這種情況下,x和y是OP繪製文本的地方,答案是圍繞這個文本繪製一個框。 – eyespyus 2014-02-21 16:54:51