Android中moveTo、lineTo、quadTo、cubicTo、arcTo詳解(實例)

最近在寫android畫圖常常用到這幾個什麼什麼To,一開始還真不知道cubicTo這個方法,更不用說能不能分清楚它們了,因此特此來作個小筆記,記錄下moveTo、lineTo、quadTo、cubicTo、arcTo的做用,在自定義view的時候常常用到。
接下來也會分享下這幾天寫的幾個東西。相信對於新手也會有點幫助,高手也幫忙看看有沒錯,歡迎吐槽吐槽。android

二、moveTo

moveTo 不會進行繪製,只用於移動移動畫筆。
結合如下方法進行使用。canvas

三、lineTo

lineTo 用於進行直線繪製。ide

mPath.lineTo(300, 300);
canvas.drawPath(mPath, mPaint);

默認從座標(0,0)開始繪製。如圖:動畫

圖片描述

剛纔咱們不說了moveTo是用來移動畫筆的嗎?this

mPath.moveTo(100, 100);
mPath.lineTo(300, 300);
canvas.drawPath(mPath, mPaint);

把畫筆移動(100,100)處開始繪製,效果如圖:spa

圖片描述

四、quadTo

quadTo 用於繪製圓滑曲線,即貝塞爾曲線。code

mPath.quadTo(x1, y1, x2, y2) (x1,y1) 爲控制點,(x2,y2)爲結束點。orm

一樣地,咱們仍是得須要moveTo來協助控制。coffeescript

mPath.moveTo(100, 500);
mPath.quadTo(300, 100, 600, 500);
canvas.drawPath(mPath, mPaint);

效果如圖:圖片

圖片描述

五、cubicTo

cubicTo 一樣是用來實現貝塞爾曲線的。

mPath.cubicTo(x1, y1, x2, y2, x3, y3) (x1,y1) 爲控制點,(x2,y2)爲控制點,(x3,y3) 爲結束點。

那麼,cubicTo 和 quadTo 有什麼不同呢?

官方是這麼說的:

Same as cubicTo, but the coordinates are considered relative to the current point on this contour.

說白了,就是多了一個控制點而已。

而後,咱們想繪製和上一個同樣的曲線,應該怎麼寫呢?

mPath.moveTo(100, 500);
mPath.cubicTo(100, 500, 300, 100, 600, 500);

看看效果:

QQ%E5%9B%BE%E7%89%8720141013222234.jpg

如出一轍!

若是咱們不加 moveTo 呢?

則以(0,0)爲起點,(100,500)和(300,100)爲控制點繪製貝塞爾曲線:

2014-10-13%2FQQ%E5%9B%BE%E7%89%8720141013223204.jpg

六、arcTo

arcTo 用於繪製弧線(實際是截取圓或橢圓的一部分)。

mPath.arcTo(ovalRectF, startAngle, sweepAngle) , ovalRectF爲橢圓的矩形,startAngle 爲開始角度,sweepAngle 爲結束角度。

mRectF = new RectF(10, 10, 600, 600);
mPath.arcTo(mRectF, 0, 90);
canvas.drawPath(mPath, mPaint);

因爲new RectF(10, 10, 600, 600)爲正方形,又截取 0 ~ 90 度 ,則所得曲線爲四分之一圓的弧線。

效果如圖:

2014-10-13%2FQQ%E5%9B%BE%E7%89%8720141013223920.jpg

相關文章
相關標籤/搜索