前言:
從事Android開發(fā)一年半啦歌径,只知道每天按照需求計(jì)劃實(shí)現(xiàn)業(yè)務(wù)的邏輯亚再,其實(shí)我知道我最差的就是繪制圖形岭粤,所以從今天開始回爐重修麸拄,一點(diǎn)一滴重新學(xué)習(xí),在這里記錄一下黔姜。說些廢話拢切,最近在聽一個(gè)廣播節(jié)目,《自控力》秆吵,如今的社會真的是太浮躁啦淮椰,人們都是依賴電子產(chǎn)品入魔,倒是簡書這里如一股清流纳寂,在這個(gè)浮躁的社會給了我一個(gè)明燈主穗,比心,不是專業(yè)寫博客的烈疚,所以排版有點(diǎn)亂黔牵。
工具:Androidstudio聪轿、夜神android模擬器
- 認(rèn)識Point與Canvas爷肝,畫筆與畫布
- 認(rèn)識Rect與RectF
先介紹Rect與RectF,下面會用到
相同點(diǎn)都是用于表示坐標(biāo)系中的一塊矩形區(qū)域陆错,并可以對其做一些簡單操作灯抛。這塊矩形區(qū)域,需要用左上和右下兩個(gè)坐標(biāo)點(diǎn)表示音瓷。
區(qū)別就是精度不一樣对嚼。Rect是使用int類型作為數(shù)值,RectF是使用float類型作為數(shù)值绳慎。兩個(gè)類型提供的方法也不是完全一致纵竖。具體使用情況請閱讀源碼靡砌。
Paint:畫筆
常用函數(shù) | 函數(shù)簡介 |
---|---|
setARGB(int a, int r, int g, int b) | 設(shè)置畫筆的顏色,a代表透明度,r厕宗,g已慢,b代表顏色值 |
setAlpha(int a) | 設(shè)置alpha不透明度佑惠,范圍為0~255 |
setColor(int color) | 設(shè)置畫筆顏色 |
setAntiAlias(boolean aa) | 是否抗鋸齒 |
setTextSize(float textSize) | 字體大小 |
setStyle(Paint.style style) | 設(shè)置畫筆的風(fēng)格,Paint.Style. FILL :實(shí)心 Paint.Style.FILL_AND_STROKE:同時(shí)實(shí)心和空心剂碴、Paint.Style.STROKE:空心 |
Canvas:畫布
常用函數(shù) | 函數(shù)簡介 |
---|---|
drawCircle(float cx, float cy, float radius,Paint paint) | 繪制圓形忆矛,參數(shù)1為中心點(diǎn)x軸位置催训、參數(shù)2為中心點(diǎn)y軸位置漫拭、參數(shù)3為圓形半徑采驻、參數(shù)4為畫筆 |
drawLine(float startX, float startY, float stopX, float stopY, Paint paint) | 繪制直線礼旅,參數(shù)1為起點(diǎn)x軸坐標(biāo)痘系、參數(shù)2為起點(diǎn)y軸坐標(biāo)汰翠、參數(shù)3為x軸終點(diǎn)坐標(biāo)复唤、參數(shù)4為y軸終點(diǎn)坐標(biāo)城豁、參數(shù)5為畫筆 |
canvas.drawOval(new RectF(float left, float top, float right, float bottom), p) | 繪制矩形唱星,其中RectF中前兩個(gè)參數(shù)表示矩形左上角點(diǎn)的坐標(biāo),后兩個(gè)參數(shù)標(biāo)示右下角點(diǎn)的坐標(biāo) |
drawRect(RectF rect, Paint paint) | 繪制一塊區(qū)域攒盈,參數(shù)一為RectF一個(gè)區(qū)域 |
drawPath(Path path, Paint paint) | 繪制一個(gè)路徑型豁,參數(shù)一為Path路徑對象,通過Path設(shè)置路徑的起點(diǎn)與終點(diǎn)充尉,也可繪制特殊路徑線條 例如:傳說中的貝塞爾曲線驼侠,只需設(shè)置對應(yīng)的控制節(jié)點(diǎn) |
代碼塊
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint()
paint.setColor(Color.RED);// 設(shè)置紅色
canvas.drawCircle(150, 150, 50, paint);// 小圓
paint.setAntiAlias(true);
paint.setARGB(50,0,0,225);
paint.setAntiAlias(false);
canvas.drawCircle(300, 300, 100, paint);// 大圓
RectF oval2 = new RectF(60, 100, 200, 240);// 設(shè)置個(gè)新的長方形倒源,掃描測量
canvas.drawArc(oval2, 200, 130, false, paint);
//畫貝塞爾曲線
paint.setTextSize(30);
canvas.drawText("畫貝塞爾曲線:", 50, 310, paint);
paint.reset();
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.GREEN);
paint.setStrokeWidth(5);
Path path2=new Path();
path2.moveTo(100, 320);//設(shè)置Path的起點(diǎn)
path2.quadTo(350, 910, 670, 400); //設(shè)置貝塞爾曲線的控制點(diǎn)坐標(biāo)和終點(diǎn)坐標(biāo)
canvas.drawPath(path2, paint);//畫出貝塞爾曲線
}
QQ圖片20170802134116.png