1. 程式人生 > >繪製弧度方法詳解

繪製弧度方法詳解

先看下原始碼:
這裡寫圖片描述
講解下幾個引數的意思:
RectF :這個引數定義了一個矩形,弧度就是在這個矩形裡繪製的,弧度的半徑就是在這個矩形裡能夠繪製的最大圓形的半徑(注意:有可能是橢圓也可能是正圓,這取決於矩形本身)如下圖的四個紫色的點:
這裡寫圖片描述
其實你所要繪製的弧形也是根據這個最大圓形繪製的。
startAngle:這個引數就如字面意思,開始的角度。在圖中我也標出了幾個角度,順序就是這個順序!
sweepAngle :這個是你要繪製的角度,比如圖中我就是繪製了一個90度的弧形!
useCenter 這個引數很重要,是否是在中心點的位置。如果為true則繪製的時候回從圓心到開始角度所在的位置繪製一條線條,如下圖:
這裡寫圖片描述


順便貼下相關程式碼:
Paint paint = new Paint();
RectF rectF = new RectF(-200, -200, 200, 200);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.RED);
paint.setColor(Color.YELLOW);
canvas.drawRect(rectF, paint);
paint.setColor(Color.RED);
paint.setStrokeWidth(4);
paint.setStyle(Paint.Style.STROKE);
canvas.drawArc(rectF, 0, 90, true, paint);

注意這句: canvas.drawArc(rectF, 0, 90, true, paint);
首先我設定useCenter為true,然後從0度的位置順時針繪製90度就是現在的樣子了!
如果將useCenter設定為false就變成了這樣:
這裡寫圖片描述
然後我再將上面的程式碼改成現在這樣:
Paint paint = new Paint();
RectF rectF = new RectF(-200, -200, 200, 200);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.RED);
paint.setColor(Color.YELLOW);
canvas.drawRect(rectF, paint);
paint.setColor(Color.RED);
paint.setStrokeWidth(4);
paint.setStyle(Paint.Style.FILL);
canvas.drawArc(rectF, 90, 90, false, paint);
canvas.drawArc(rectF, 0, 90, true, paint);
執行之後的結果就是這樣的了:
這裡寫圖片描述


看到不一樣了吧!如果繪製的是實心的話,繪製的區域就不一樣了,因為出發點事不一樣的!