如标题所示,应用于我的 NSBezierPath
的 setLineDash
不会更改描边线。完全没有效果。
我希望它会让我的路线变成虚线。看到图片上有两条垂直的红线。
代码:
NSBezierPath* p= [NSBezierPath bezierPath];
CGFloat x = r.origin.x + r.size.width/2;
float dash_pattern[]={15.,15.};
NSInteger count = sizeof(dash_pattern)/sizeof(dash_pattern[0]);
[p setLineDash:(CGFloat*)dash_pattern count:count phase:0.]; // no effect ?
[p moveToPoint:NSMakePoint(x, r.origin.y+r.size.height)];
[p lineToPoint:NSMakePoint(x, [view bounds].origin.y+[view bounds].size.height)];
[[NSColor redColor]set];
[p stroke];
最佳答案
这是在黑暗中拍摄的,但在 64 位 OS X 上,CGFloat
是 double
而不是float
。因此,您应该将数组定义为
CGFloat dash_pattern[]={15.,15.};
这也使得 setLineDash:(CGFloat*)dash_pattern
中显式转换不必要的。
关于objective-c - NSBezierPath setLineDash 不会产生任何效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22150672/