iphone畫圓弧或扇形

2021-08-26 20:04:23 字數 1939 閱讀 1493

iphone畫圓弧或扇形

核心函式:

cgcontextaddarc

adds an arc of a circle to the current path, possibly preceded by a straight line segment

void cgcontextaddarc (

cgcontextref c, //圖形上下文

cgfloat x,//圓心x座標

cgfloat y,//圓心y座標

cgfloat radius,//圓半徑

cgfloat startangle,//開始的弧度

cgfloat endangle,//結束的弧度

int clockwise //畫的方向(1=順時針,0=逆時針)

);

關於角度與弧度的轉換關係**:

#define pi 3.14159265358979323846

static inline float radians(double degrees)

示例**:

//設定矩形填充顏色:紅色  

cgcontextsetrgbfillcolor(context, 1.0, 0.0, 0.0, 1.0);

//設定畫筆顏色:黑色

cgcontextsetrgbstrokecolor(context, 0, 0, 0, 1);

//設定畫筆線條粗細

cgcontextsetlinewidth(context, 0.6);

//扇形引數

double radius=40;//半徑

int startx=50;//圓心x座標

int starty=50;//圓心y座標

double piestart=0;//起始的角度

double piecapacity=60;//角度增量值

int clockwise=0;//0=逆時針,1=順時針

//逆時針畫扇形

cgcontextmovetopoint(context, startx, starty);

cgcontextaddarc(context, startx, starty, radius, radians(piestart), radians(piestart+piecapacity), clockwise);

cgcontextclosepath(context);

cgcontextdrawpath(context, kcgpatheofillstroke);

//扇形引數

startx=150;//圓心x座標

starty=50;//圓心y座標

piestart=0;//起始的角度

piecapacity=60;//角度增量值

clockwise=1;//0=逆時針,1=順時針

//順時針畫扇形

cgcontextmovetopoint(context, startx, starty);

cgcontextaddarc(context, startx, starty, radius, radians(piestart), radians(piestart+piecapacity), clockwise);

cgcontextclosepath(context);

cgcontextdrawpath(context, kcgpatheofillstroke);

圖中:(1)為逆時針畫扇形:角度0°-60°

(2)為順時針畫扇形:角度0°-60°

關於角度的定義:(參見下圖)

紅點為圓心,圓心右邊綠線表示的角度為0°,往下繞紅心順時針開始依次為1°、2°、3°、...、360°。

UIBezierPath畫圓弧的記錄

uibezierpath通過 void addarcwithcenter cgpoint center radius cgfloat radius startangle cgfloat startangle endangle cgfloat endangle clockwise bool clock...

UIBezierPath 畫圓弧(角度問題)

uibezierpath通過 void addarcwithcenter cgpoint center radius cgfloat radius startangle cgfloat startangle endangle cgfloat endangle clockwise bool clock...

UIBezierPath畫圓弧的記錄

文中的圖很重要!根據下文,完成了下圖的mask 如下 cgsize size self.size 畫路徑 uibezierpath maskpath uibezierpath bezierpath bottom line maskpath movetopoint cgpointmake size.w...