NSBezierPath 线变细
NSBezierPath line thins out
我正在尝试使用 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
在添加段的末尾留下当前点。
我正在尝试使用 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
在添加段的末尾留下当前点。