canvas中繪製路徑利用:canvas
void drawPath (Path path, Paint paint)
bash
void moveTo (float x1, float y1):直線的開始點;將直線路徑的繪製點定在(x1,y1)的位置;
void lineTo (float x2, float y2):直線的結束點,又是第二次繪製直線路徑的開始點;lineTo()能夠一直用;
void close ():若是連續畫了幾條直線,但沒有造成閉環,調用Close()會將路徑首尾點鏈接起來,造成閉環;
函數
1 Paint paint = new Paint();
2
3 paint.setColor(Color.BLUE);//設置畫筆顏色
4 paint.setStyle(Paint.Style.STROKE);//填充樣式改成描邊
5 paint.setStrokeWidth(10); //設置畫筆寬度
6
7 Path path = new Path();
8
9 path.moveTo(5,5);//設置起始點
10 path.lineTo(10,100);//第一條直線的終點,及第二條直線的起點
11 path.lineTo(200,100);//
12 path.lineTo(400,100);//第三條直線
13 path.close();//閉環
14
15 canvas.drawPath(path,paint);
複製代碼
void addRect (float left, float top, float right, float bottom, Path.Direction dir)
void addRect (RectF rect, Path.Direction dir)字體
這裏Path類建立矩形路徑的參數與上篇canvas繪製矩形差很少,惟一不一樣點是增長了Path.Direction參數;
Path.Direction有兩個值:ui
Path.Direction.CCW:指建立逆時針方向的矩形路徑;
Path.Direction.CW:指建立順時針方向的矩形路徑;
spa
1 Paint paint = new Paint();
2 paint.setColor(Color.BLUE);//設置畫筆顏色
3 paint.setStyle(Paint.Style.STROKE);//填充樣式改成描邊
4 paint.setStrokeWidth(10); //設置畫筆寬度
5 //先建立兩個不同的路徑
6 //第一個逆向生成
7
8 Path CCWpath = new Path();
9
10 RectF rectF = new RectF(50,50,250,200);
11 CCWpath.addRect(rectF, Path.Direction.CCW);
12
13 //第二個順向生成
14 Path CWpath = new Path();
15 RectF rectF1 = new RectF(300,50,450,200) ;
16 CWpath.addRect(rectF1, Path.Direction.CW);
17
18
19 // 先畫出這兩個路徑
20 canvas.drawPath(CCWpath,paint);
21 canvas.drawPath(CWpath,paint);
複製代碼
1 Paint paint = new Paint();
2 paint.setColor(Color.BLUE);//設置畫筆顏色
3 paint.setTextSize(20);
4 paint.setStyle(Paint.Style.STROKE);//填充樣式改成描邊
5 paint.setStrokeWidth(1); //設置畫筆寬度
6 //先建立兩個不同的路徑
7 //第一個逆向生成
8
9 Path CCWpath = new Path();
10
11 RectF rectF = new RectF(50,50,250,200);
12 CCWpath.addRect(rectF, Path.Direction.CCW);
13
14 //第二個順向生成
15 Path CWpath = new Path();
16 RectF rectF1 = new RectF(300,50,450,200) ;
17 CWpath.addRect(rectF1, Path.Direction.CW);
18
19
20 // 先畫出這兩個路徑
21 canvas.drawPath(CCWpath,paint);
22 canvas.drawPath(CWpath,paint);
23
24 String text = "新手上路,多多努力,一塊兒加油!";
25 paint.setColor(Color.RED);
26 canvas.drawTextOnPath(text,CCWpath,0,10,paint);//文字逆時針生成
27 canvas.drawTextOnPath(text,CWpath,0,10,paint);//文字順時針生成
複製代碼
構造函數:
3d
void drawText (String text, float x, float y, Paint paint)code
void drawText (CharSequence text, int start, int end, float x, float y, Paint paint)cdn
void drawText (String text, int start, int end, float x, float y, Paint paint)blog
void drawText (char[] text, int index, int count, float x, float y, Paint paint)
1 //普通設置
2 Paint paint=new Paint();
3 paint.setAntiAlias(true); //是否使用抗鋸齒功能,若是使用,使繪圖速度變慢
4 paint.setStyle(Paint.Style.FILL);//繪圖樣式,對於設文字和幾何圖形有效
5 // Style.FILL/Style.FILL_AND_STROKE/Style.STROKE
6 paint.setTextAlign(Paint.Align.CENTER);//s設置文字對齊方式,取值:align.CENTER、align.LEFT或align.RIGHT
7 paint.setTextSize(10);//設置文字大小
8 paint.setStrokeWidth(10);//設置畫筆寬度
9
10 //樣式設置
11 paint.setFakeBoldText(true);//將水平方向拉伸,高度不變
12 paint.setUnderlineText(true);//設置下劃線
13 paint.setTextSkewX((float)-0.5);//設置字體水平傾斜度,普通斜體字是-0.5
14 paint.setStrikeThruText(true);//設置帶有刪除線效果
15
16 //其餘設置
17 paint.setTextScaleX(5);//將水平方向拉伸,高度不變
複製代碼
Typeface create(String familyName, int style) //直接經過指定字體名來加載系統中自帶的文字樣式
Typeface create(Typeface family, int style) //經過其它Typeface變量來構建文字樣式
Typeface createFromAsset(AssetManager mgr, String path) //經過從Asset中獲取外部字體來顯示字體樣式
Typeface createFromFile(String path)//直接從路徑建立
Typeface createFromFile(File path)//從外部路徑來建立字體樣式
Typeface defaultFromStyle(int style)//建立默認字體
1 //普通設置
2 Paint paint=new Paint();
3 paint.setColor(Color.BLUE);
4 paint.setAntiAlias(true); //是否使用抗鋸齒功能,若是使用,使繪圖速度變慢
5
6 paint.setTextSize(100);//設置文字大小
7 paint.setStrokeWidth(5);//設置畫筆寬度
8 //繪圖樣式,設置爲填充
9 paint.setStyle(Paint.Style.FILL);
10 canvas.drawText("加油努力吧!",150,100,paint);
11
12 //繪圖樣式設置爲描邊
13 paint.setStyle(Paint.Style.STROKE);
14 canvas.drawText("加油努力吧!",150,200,paint);
15
16 //繪圖樣式設置爲填充而且描邊
17 paint.setStyle(Paint.Style.FILL_AND_STROKE);
18 canvas.drawText("加油努力吧!",150,300,paint);
複製代碼
Style的枚舉值以下:
Typeface.NORMAL //正常體
Typeface.BOLD //粗體
Typeface.ITALIC //斜體
Typeface.BOLD_ITALIC //粗斜體
1 //普通設置
2 Paint paint=new Paint();
3 paint.setColor(Color.BLUE);
4 paint.setAntiAlias(true); //是否使用抗鋸齒功能,若是使用,使繪圖速度變慢
5
6 paint.setTextSize(100);//設置文字大小
7 paint.setStrokeWidth(5);//設置畫筆寬度
8 //繪圖樣式,設置爲填充
9 paint.setStyle(Paint.Style.FILL);
10 canvas.drawText("加油努力吧!",150,100,paint);
11
12 paint.setFakeBoldText(true);//將水平方向拉伸,高度不變
13 paint.setUnderlineText(true);//設置下劃線
14 paint.setStrikeThruText(true);//設置帶有刪除線效果
15
16 paint.setTextSkewX((float)-0.5);//設置字體水平傾斜度,普通斜體字是-0.5
17 canvas.drawText("加油努力吧!",150,200,paint);
18
19
20 paint.setTextSkewX((float)0.5);//設置字體水平傾斜度,普通斜體字是-0.5
21 canvas.drawText("加油努力吧!",150,300,paint);
複製代碼
1 //普通設置
2 Paint paint=new Paint();
3 paint.setColor(Color.BLUE);
4 paint.setAntiAlias(true); //是否使用抗鋸齒功能,若是使用,使繪圖速度變慢
5
6 paint.setTextSize(50);//設置文字大小
7 paint.setStrokeWidth(5);//設置畫筆寬度
8 //繪圖樣式,設置爲填充
9 paint.setStyle(Paint.Style.FILL);
10 canvas.drawText("加油努力吧!",10,50,paint);
11
12 paint.setTextScaleX(2);//水平方向拉伸,高度不變
13 canvas.drawText("加油努力吧!",10,100,paint);
14
15
16 //寫在同一位置,同顏色,看高度是否不變
17
18
19 paint.setTextScaleX(1);//先還原拉伸效果
20 canvas.drawText("加油努力吧!",10,150,paint);
21
22 paint.setColor(Color.RED);
23 paint.setTextScaleX(2);//從新設置拉伸效果
24 canvas.drawText("加油努力吧!",10,200,paint);
複製代碼
Typeface defaultFromStyle(int style)//建立默認字體
Typeface create(String familyName, int style) //直接經過指定字體名來加載系統中自帶的文字樣式
1 //普通設置
2 Paint paint=new Paint();
3 paint.setColor(Color.BLUE);
4 paint.setAntiAlias(true); //是否使用抗鋸齒功能,若是使用,使繪圖速度變慢
5
6 paint.setTextSize(100);//設置文字大小
7 paint.setStrokeWidth(5);//設置畫筆寬度
8 //繪圖樣式,設置爲填充
9 paint.setStyle(Paint.Style.FILL);
10
11 String familyName = "宋體";
12 Typeface font = Typeface.create(familyName,Typeface.NORMAL);
13 paint.setTypeface(font);
14 canvas.drawText("努力加油",10,100, paint);
複製代碼