0
好的,所以我想绘制一个虚线框,将其细分成要放置内容的部分。这里是我的代码:NSBezierPath对象似乎正在绘制可变线宽
NSBezierPath *path = [NSBezierPath bezierPathWithRect:dirtyRect];
[path setLineWidth:3];
CGFloat pattern[2] = {5, 5};
[path setLineDash:pattern count:2 phase:0];
CGFloat totalHeight = header.frame.origin.y - 10;
CGFloat sectionOffset = 0;
if([game getNumPlayers] == 2) {
sectionOffset = totalHeight/2;
} else if([game getNumPlayers] == 3) {
sectionOffset = totalHeight/3;
} else if([game getNumPlayers] == 4) {
sectionOffset = totalHeight/4;
}
for(int i = 0; i < [[game getPlayers] count]; i++) {
[path moveToPoint:NSMakePoint(0, totalHeight - (sectionOffset * i))];
[path lineToPoint:NSMakePoint(dirtyRect.size.width, totalHeight - (sectionOffset * i))];
}
[path stroke];
这是包含我的自定义视图的drawRect方法中,所以dirtyRect是的NSRect相当于视图的边界。变量标题引用超级视图中的另一个视图,我将这些行的位置作为基础。
下面是这段代码的实际绘制的截图(除标签明明):
正如你所看到的,除非我们正在处理一个非常不幸的光学错觉,我怀疑,包装盒中的分隔器看起来比盒子的轮廓厚。我已明确地将path对象的lineWidth设置为三,所以我不确定这是为什么。我会很感激任何可以提供的建议。
完美!我自己从来没想过这件事,但当你考虑这件事时,它会非常有意义。视图外的东西会被裁剪掉,并且从线条边缘绘制没有任何意义。 –