【问题标题】:how to get NSBezier paths to stroke with a consistant line width如何获得具有一致线宽的 Bezier 路径
【发布时间】:2013-02-06 01:36:54
【问题描述】:

在 drawRect 的 NSView 子类中,我画了一些 NSBezierPaths。我希望由于这些笔画而绘制的线条与视图的缩放比例完全相同,最好只有几个像素宽。这是我的drawRect:

- (void)drawRect:(NSRect)dirtyRect
{
    NSSize x = [self convertSize:NSMakeSize(1,1) fromView:nil];
    printf("size = %f %f\n", x.width, x.height);
    for(NSBezierPath *path in self.paths) {
        [path setLineWidth:x.width];
        [path stroke];
    }
}

这是我看到的截图:


(来源:crb at www.sonic.net

谁能建议我如何获得我正在寻找的清晰一致的路径轮廓?

谢谢。

【问题讨论】:

  • 你的宽度是分数吗?
  • 这是一个类似于 12.37 的浮点数,我尝试将它四舍五入到最接近的 int 但似乎没有任何区别。

标签: cocoa core-graphics


【解决方案1】:

尝试匹配设备的确切像素。 (自 iphone 5 起更难)

不要使用半点坐标:比如 0.5(在视网膜上工作,但在“非视网膜”上它们不清晰)。

线宽向左/向上,向右一半。

因此,如果您的 lineWidth 为 2 并以整数值进行坐标,则它应该是锐利的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    相关资源
    最近更新 更多