NSBezierPath线变稀

时间:2019-04-04 00:28:34

标签: objective-c cocoa nsbezierpath

我正尝试使用NSBezierPath在300x300像素的矩形中绘制幂函数曲线,如下所示:

-(void)drawPowerCurve:(float)power points:(int)numbPoints{
    NSBezierPath * path = [NSBezierPath bezierPath];
    [path setLineWidth: 1.0];
    [[NSColor colorWithCalibratedRed:0.0 green:0.0 blue:1.0 alpha:1.0] set];

    NSPoint borderOrigin = {35.5,15.5};
    NSPoint endPoint;
    [path moveToPoint:borderOrigin];
    for(int i = 0; i < numbPoints; i++){
        endPoint.x = borderOrigin.x + (300.0/numbPoints)*(i+1);
        endPoint.y = borderOrigin.y + 300.0*pow(((i+1)/(float)numbPoints), power);
        [path lineToPoint:endPoint];
        [path stroke];
        [path moveToPoint:endPoint];
    }
}

但是,曲线在顶端比底端变细。 例如power = 1.8和numbPoints = 50。 而且,该曲线看起来不像Apple的ColorSync Utility中显示的曲线那样平滑。当然,我不知道他们如何在ColorSync中绘制曲线。关于如何改善这些曲线的外观的任何想法(尤其是摆脱稀疏的情况)。

编辑-以下是屏幕截图:enter image description here

1 个答案:

答案 0 :(得分:3)

stroke移出循环,因此您只绘制一次曲线,而不是随着其增长numbPoints绘制一次。另外,请删除循环中的多余moveToPointlineToPoint将当前点留在添加的线段的末尾。