石英2D锯齿状线条

时间:2014-04-05 19:31:17

标签: macos cocoa drawing quartz-2d

查看我的绘图应用程序产生的奇怪路径:

/Users/michaelsavich/Desktop/Debug pic.jpeg

中间的红线是一个调试功能,它表示输入鼠标移动和它们之间的距离,线宽为1 px,黑色是输出,宽度为30 px。

我正在绘制这个的方式很简单,只是在合并的鼠标事件之间进行点对点:

//This is called in mouseDragged: and [theEvent locationInWindow] is passed to point
-(void)addPointToCurrentStroke:(CGPoint)point 

if (self.newStroke == TRUE) //If the currentStroke doesn't exist or is empty
{
   self.currentStroke = CGPathCreateMutable();
   CGPathMoveToPoint(self.currentStroke, NULL, point.x, point.y);
   self.newStroke = FALSE;
}

else if (self.newStroke == FALSE)
    CGPathAddLineToPoint(self.currentStroke, NULL, point.x, point.y);
}

然后在drawRect中使用相应的用户设置描绘此路径,在这种情况下,大小为30,颜色为黑色。请注意圆形线帽,这使得它更加奇怪,就像那样突然出现。

那么,为什么我从预定的路径到目前为止这些尖峰?我无法做出正面或反面。如果有人能告诉我这里发生了什么,我将非常感激。

1 个答案:

答案 0 :(得分:1)

您的CG上下文设置为在路径的每个角使用斜接连接。当角落处有一个小角度时,斜切可以伸出很长的距离。使用CGContextSetLineJoin来指定圆形连接或斜角连接。

请参阅Quartz 2D Programming Guide, "Parameters That Affect Stroking"