objective-c - NSBezierPath setLineDash 不会产生任何效果

标签 objective-c macos cocoa graphics

如标题所示,应用于我的 NSBezierPathsetLineDash 不会更改描边线。完全没有效果。

我希望它会让我的路线变成虚线。看到图片上有两条垂直的红线。

代码:

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];

enter image description here

最佳答案

这是在黑暗中拍摄的,但在 64 位 OS X 上,CGFloatdouble而不是float 。因此,您应该将数组定义为

CGFloat dash_pattern[]={15.,15.};

这也使得 setLineDash:(CGFloat*)dash_pattern 中显式转换不必要的。

关于objective-c - NSBezierPath setLineDash 不会产生任何效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22150672/

相关文章:

python - Pycharm conda env 不显示通过 pip 安装的包

macos - Mac 操作系统 : fastest way to list files of directory and get sizes

objective-c - 极其基本的 UITableView 和保存/加载数据查询

iphone - 以编程方式打开设置 iOS 6

macos - 如何在 OS X El Capitan 中禁用 Bash session

macos - Mac OS 10.6.7 上带有 CUDA 的 OpenCV

objective-c - 可用于设置计算机 sleep 并在 mac os x 中的 cocoa 应用程序中显示 sleep 值的 API

objective-c - NSSliderCell : subclass to draw custom knob

ios - 如何使用 UITableViews 深入查看 plist?

iphone - 在 objective-c 中枚举具有固定长度的 nsstring 的所有子字符串