2013-03-25 90 views
3

如何使用Canvas繪製具有指定邊界和矩形內部的填充矩形文本Android?我試過使用畫布在填充的矩形內繪製文本Android

mPaint.setColor(Color.GREEN); 
canvas.drawText(mText, x, y, mPaint); 
mPaint.setColor(Color.BLACK); 
canvas.drawRect(x, y, x + w, y + h, mPaint); 

但文本不在那個矩形內。任何好友都可以告訴我如何在考慮文字大小的情況下圍繞指定文本繪製矩形?

回答

10

在這裏我已經硬編碼的x和y值。你可以改變他們

 mpaint= new Paint(); 
     mpaint.setColor(Color.RED); 
     mpaint.setStyle(Style.FILL); 
     paint2= new Paint(); 
     paint2.setColor(Color.GREEN); 
     paint2.setTextSize(50); //set text size 
     float w = paint2.measureText(s)/2; 
     float textSize = paint2.getTextSize(); 


     @Override 
     protected void onDraw(Canvas canvas) { 
      paint2.setTextAlign(Paint.Align.CENTER); 
      canvas.drawRect(300-w, 300 - textsize, 300 + w, 300, mpaint); 
      canvas.drawText(s, 300, 300 ,paint2); //x=300,y=300  
     } 

編輯:

它的壞主意,叫measureTextonDraw。您可以在onDraw之外執行此操作。

還有一個關於性能的視頻,以及爲什麼你應該避免撥款onDrawhttps://www.youtube.com/watch?v=HAK5acHQ53E

得到的抽點

enter image description here

+0

對不起忘了提,矩形應只文本區的位置和文字大小可以動態地改變。取決於文本的大小和長度我畫矩形? – 2013-03-25 07:39:22

+0

@Kanti1903嘗試以上。 – Raghunandan 2013-03-25 07:39:24

+1

@ Kanti1903嘗試編輯 – Raghunandan 2013-03-25 08:48:57