Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android精確繪制文字位置的方法

android精確繪制文字位置的方法

編輯:關於Android編程

android 中使用Canvas的drawText繪制文本的位置,是基於基線的。如下圖:

\

其中字母Q的小尾巴在橫線下面了。


<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+1PXDtNH51dLXvNfWxLi1xNbQ0MTOu9bDxNijvzwvcD4KPHA+z8i/tM/Cw+a1xMD919OjuqOo09Kx37XEyv3X1qOsse3KvtfWzOW1xCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pPGJyPgo8L3A+CjxwPjxpbWcgc3JjPQ=="/uploadfile/Collfiles/20140607/2014060709072586.jpg" alt="\">


這裡面的關鍵是Paint.getTextBound。 getTextBound會填充一個Rect,這個Rect表示的就是一個字的left, top, right, bottom。注意到left和top並不是從0,0開始的。 left和right應該是從0坐標開始的,而top和bottom相對於基線而言的。這個信息足夠我們找准文字的中心了。


最後上一下代碼:

		@Override
		public void onDraw(Canvas canvas) {
			
			mPaint.setTextSize(40f);
			mPaint.setAntiAlias(true);
			
			mPaint.setColor(0xffff0000);
			canvas.drawText(alphas, 30, 60, mPaint);
			mPaint.setColor(0xff000000);
			canvas.drawLine(0, 60, 1000, 60, mPaint);
			
			
			for(int i = 0; i < alphas.length(); i ++)  {
				int y = i*70+100;
				
				mPaint.getTextBounds(alphas, i, i+1, mBound);
				
				mPaint.setColor(0xff000000);
				canvas.drawText(String.format("%d,%d,%d,%d", mBound.left,mBound.top, mBound.right,mBound.bottom), 150, y, mPaint);
				
				mPaint.setColor(0xffff0000);
				canvas.drawCircle(60, y, 30, mPaint);

				mPaint.setColor(0xffffffff);
				canvas.drawText(alphas, i, i+1, 60 - (mBound.right + mBound.left)/2, y - (mBound.bottom + mBound.top)/2, mPaint);
				mPaint.setColor(0xff000000);
				canvas.drawLine(30, y, 90, y, mPaint);
				canvas.drawLine(60, y-30, 60, y+30, mPaint);
				
			
				
			}
			
			
		}
		
	}

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved