貝塞爾曲線

1. 畫圓
需要添加shapeLayer

CGPoint layerCenter = CGPointMake(CGRectGetWidth(self.view.frame)/2, CGRectGetWidth(self.view.frame)/2);
    CAShapeLayer *layer = [CAShapeLayer layer];
    layer.frame = self.view.bounds;
    layer.lineWidth = 3.0;  //線條寬度
    layer.strokeColor = [UIColor redColor].CGColor; //線條顏色
    layer.fillColor = [UIColor cyanColor].CGColor; //填充色

    self.path = [UIBezierPath bezierPath];
    [self.path addArcWithCenter:layerCenter radius:100 startAngle:0.0 endAngle:M_PI*2 clockwise:YES];
    layer.path = self.path.CGPath;

//    UIGraphicsBeginImageContext(self.view.bounds.size);
//    [self.path stroke];
//    [self.path fill];
//    UIGraphicsEndImageContext();
//    
    [self.view.layer addSublayer:layer];

注:
UIBezierPath通過
- (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise
可以畫出一段弧線。
參數含義
clockwise:YES爲順時針,No爲逆時針

圖中的這段弧線對應的就是

[path addArcWithCenter:center    
                radius:radius    
            startAngle:M_PI*1.1    
              endAngle:M_PI*1.9    
             clockwise:YES];

________________________________________________________
貝塞爾曲線中的一些方法
UIBezierPath 包含了幾個特殊形狀的類方法,很容易使用。

// 創建矩形
+ (UIBezierPath *)bezierPathWithRect:(CGRect)rect

// 創建圓角矩形
+ (UIBezierPath *)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius

// 創建矩形內切圓
+ (UIBezierPath *)bezierPathWithOvalInRect:(CGRect)rect

// 創建弧形
+ (UIBezierPath *)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise

除了這些閉合的特殊路徑,也有一些方法用來添加子路徑。

// 添加直線
- (void)addLineToPoint:(CGPoint)point

// 添加弧形線段
- (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise

// 添加二階貝塞爾曲線
- (void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint

// 添加三階貝塞爾曲線
- (void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2

想詳細瞭解關於貝塞爾曲線的 階數 問題,可以轉至http://www.cnblogs.com/jay-dong/archive/2012/09/26/2704188.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章