iOS UIBezierPath 貝塞爾曲線

weixin_33850890發表於2016-04-14

弧度=(角度/180) *PI
角度=(弧度/PI) * 180

//建立貝塞爾曲線
UIBezierPath *mPath = [UIBezierPath bezierPath];
[mPath moveToPoint:CGPointMake(100, 100)]; //建立一個點
[mPath addLineToPoint:CGPointMake(100, 300)]; // 加條線,從點移動到另一個點
[mPath addLineToPoint:CGPointMake(300, 300)]; // 加條線,從點移動到另一個點
[mPath closePath]; // 關閉貝塞爾線

UIColor *fillColor = [UIColor greenColor];          //設定顏色
[fillColor set];                                    //填充顏色
[mPath fill];                                       //貝塞爾線進行填充

UIColor *stroke = [UIColor redColor];               //設定紅色畫筆線
[stroke set];                                       //填充顏色
[mPath stroke];                                     //貝塞爾線進行畫筆填充

//建立一個橢圓的貝塞爾曲線 半徑相等 就是圓了
UIBezierPath *mPath1 = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(60, 60, 10, 10)];
[mPath1 fill];

//建立一個矩形的貝塞爾線
UIBezierPath *mPath2 = [UIBezierPath bezierPathWithRect:CGRectMake(70,70, 10, 10)];
[mPath2 stroke];

//建立一個圓弧 傳的弧度
UIBezierPath *mPath3 = [UIBezierPath bezierPathWithArcCenter:CGPointMake(50, 100)
                                                      radius:10
                                                  startAngle:DEGREES_TO_RADIANS(0)
                                                    endAngle:DEGREES_TO_RADIANS(180)
                                                   clockwise:YES];
[mPath3 fill];

//建立一個 矩形的貝塞爾曲線, 帶圓角
UIBezierPath *mPath4 = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(250, 15, 20, 20) cornerRadius:3];
[mPath4 fill];

//定義一個矩形 邊角會變成 設定的角度  方位/角度大小
UIBezierPath *mPath5 =[UIBezierPath bezierPathWithRoundedRect:CGRectMake(250, 45, 40, 40)
                                            byRoundingCorners:UIRectCornerTopLeft
                                                  cornerRadii:CGSizeMake(10, 10)];
[mPath5 fill];


//定義一個二級的賽貝爾曲線 重點|拐彎點
UIBezierPath *mPath6 = [UIBezierPath bezierPath];
[mPath6 moveToPoint:CGPointMake(10,260)];
[mPath6 addQuadCurveToPoint:CGPointMake(200,260) controlPoint:CGPointMake(85, 240)];
[mPath6 setLineWidth:3];
[mPath6 stroke];

//定義一個三級的賽貝爾曲線 終點|拐點1|拐點2
UIBezierPath *mPath7 = [UIBezierPath bezierPath];
[mPath7 moveToPoint:CGPointMake(10,290)];
[mPath7 addCurveToPoint:CGPointMake(300, 290)
          controlPoint1:CGPointMake(50, 270)
          controlPoint2:CGPointMake(140, 340)];
[mPath7 stroke];

//當前貝塞爾的點
NSLog(@"mPath7 currentPoint is  : %@",NSStringFromCGPoint(mPath7.currentPoint));
674939-70348481ab0a3292.png
Simulator Screen Shot 2016年4月14日 下午1.30.09.png

相關文章