一些貝塞爾曲線的用法

  • 貝塞爾曲線畫餅圖中的扇形:
UIBezierPath *arcPath = [UIBezierPath bezierPath];
            [arcPath moveToPoint:CGPointMake(vFrame.size.width / 2, vFrame.size.height / 2)];
            [arcPath addArcWithCenter:CGPointMake(vFrame.size.width / 2, vFrame.size.height / 2) radius:layerRadius startAngle: - M_PI_2 + startValue * 2 * M_PI  endAngle: - M_PI_2 + endValue * 2 * M_PI clockwise:YES];
  • 貝塞爾曲線畫類似拋物線的曲線有control點(diǎn)的
CGPoint centerPoint = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2);
    [lineColor set];
    UIBezierPath *path = [UIBezierPath bezierPath];
    path.lineWidth = 2.0;
    path.lineCapStyle = kCGLineCapRound;//拐角處理
    path.lineJoinStyle = kCGLineJoinRound;//終點(diǎn)處理
    
    [path moveToPoint:CGPointMake(arcMiddlePoint.x, arcMiddlePoint.y)];
    
    CGPoint controlPoint = CGPointZero;
    CGPoint endPoint = CGPointZero;
    
    if(arcMiddlePoint.x >= centerPoint.x && arcMiddlePoint.y <= centerPoint.y){
        //右上角
        controlPoint = CGPointMake(arcMiddlePoint.x + 10, labelFrame.origin.y);
        endPoint = CGPointMake(labelFrame.origin.x, labelFrame.origin.y + labelFrame.size.height / 2);
    }else if (arcMiddlePoint.x >= centerPoint.x && arcMiddlePoint.y > centerPoint.y){
        //右下角
        controlPoint = CGPointMake(arcMiddlePoint.x + 10, labelFrame.origin.y + 10);
        endPoint = CGPointMake(labelFrame.origin.x, labelFrame.origin.y + labelFrame.size.height / 2);
    }else if (arcMiddlePoint.x < centerPoint.x && arcMiddlePoint.y >= centerPoint.y){
        //左下角
        controlPoint = CGPointMake(arcMiddlePoint.x - 10, labelFrame.origin.y + 10);
        endPoint = CGPointMake(labelFrame.origin.x + labelFrame.size.width, labelFrame.origin.y + labelFrame.size.height / 2);
    }else{
        //左上角
        controlPoint = CGPointMake(CGRectGetMaxX(labelFrame) + 10, arcMiddlePoint.y);
        endPoint = CGPointMake(labelFrame.origin.x + labelFrame.size.width, labelFrame.origin.y + labelFrame.size.height / 2);
    }
    [path addQuadCurveToPoint:endPoint controlPoint:controlPoint];
    [path stroke];
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容