我正在尝试使用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中绘制曲线。关于如何改善这些曲线的外观的任何想法(尤其是摆脱稀疏化)。
编辑-这是屏幕截图:
最佳答案
将stroke
移出循环,以便您仅绘制一次曲线,而不是随着其增长绘制numbPoints
次。同时在循环中删除多余的moveToPoint
,lineToPoint
将当前点留在添加的段的末尾。
关于objective-c - NSBezierPath线变稀,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55506141/