1. 程式人生 > >path的一些基本用法

path的一些基本用法

Paint的基本實用方法和技巧
(1)基本的使用
1.1 負責圖形繪製相關
//重置
mPaint.reset();
mPaint.setColor(Color.RED);
mPaint.setAlpha(255);
//設定畫筆的樣式
mPaint.setStyle(Paint.Style.FILL);//填充內容
mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
mPaint.setStyle(Paint.Style.STROKE);//描邊
//畫筆的寬度
mPaint.setStrokeWidth(50);

//線帽

mPaint.setStrokeCap(Paint.Cap.BUTT);//沒有

mPaint.setStrokeCap(Paint.Cap.ROUND);//圓形
mPaint.setStrokeCap(Paint.Cap.SQUARE);//方形

mPaint.setStrokeJoin(Paint.Join.MITER);//銳角
mPaint.setStrokeJoin(Paint.Join.ROUND);//圓弧
mPaint.setStrokeJoin(Paint.Join.BEVEL);//直線
//線段的連線處的樣式
mPaint.setStrokeJoin(Paint.Join.MITER);//銳角
mPaint.setStrokeJoin(Paint.Join.ROUND);//圓弧
mPaint.setStrokeJoin(Paint.Join.BEVEL);//直線


//防鋸齒,會損失一定的效能
mPaint.setAntiAlias(true);




1.2 負責文字繪製相關
//-----------------2.文字繪製--------------------
//獲得字元行間距
mPaint.getFontSpacing();
//獲得字元之間的間距
mPaint.getLetterSpacing();
mPaint.setLetterSpacing(letterSpacing)//設定
//設定文字刪除線
mPaint.setStrikeThruText(true);
//是否設定下劃線
mPaint.setUnderlineText(true);
//設定文字大小
mPaint.setTextSize(textSize);
mPaint.getTextSize();
mPaint.setTypeface(Typeface.BOLD);//設定字型型別
Typeface.ITALIC
Typeface.create(familyName, style)//載入自定義字型
//文字傾斜 預設0,官方推薦的-0.25f是斜體
mPaint.setTextSkewX(-0.25f);
//文字對齊方式
mPaint.setTextAlign(Align.LEFT);
mPaint.setTextAlign(Align.CENTER);
mPaint.setTextAlign(Align.RIGHT);
//計算制定長度的字串(字元長度、字元個數、顯示的時候真實的長度)
int breadText = mPaint.breakText(text, measureForwards, maxWidth, measuredWidth)

mPaint.setTextSize(50);
float[] measuredWidth = new float[1];
         int breakText = mPaint.breakText(str, true, 200, measuredWidth);

// Rect bounds獲取文字的矩形區域(寬高)
 mPaint.getTextBounds(text, index, count, bounds)
 mPaint.getTextBounds(text, start, end, bounds)

//獲取文字的寬度,和上面類似,但是是一個比較粗略的結果
float measureText = mPaint.measureText(str);
//獲取文字的寬度,和上面類似,但是是比較精準的。
float[] measuredWidth = new float[10];

//measuredWidth得到每一個字元的寬度;textWidths字元數
int textWidths = mPaint.getTextWidths(str, measuredWidth);
 mPaint.getTextWidths(text, start, end, widths)


=====================基線的問題=====================


FontMetrics fontMetrics = mPaint.getFontMetrics();
fontMetrics.top;
fontMetrics.ascent;
fontMetrics.descent;
fontMetrics.bottom;
所有的四個值都是以基線baseLine為基準來計算的。baseline以上的就是負的;以下的是正的。


在做自定義控制元件的時候canvas.drawText(x,y) 這個y並不是text的左上角,而是以baseline為基準的。