查看我的绘图应用程序产生的奇怪路径:
中间的红线是一个调试功能,它表示输入鼠标移动和它们之间的距离,线宽为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,颜色为黑色。请注意圆形线帽,这使得它更加奇怪,就像那样突然出现。
那么,为什么我从预定的路径到目前为止这些尖峰?我无法做出正面或反面。如果有人能告诉我这里发生了什么,我将非常感激。
答案 0 :(得分:1)
您的CG上下文设置为在路径的每个角使用斜接连接。当角落处有一个小角度时,斜切可以伸出很长的距离。使用CGContextSetLineJoin
来指定圆形连接或斜角连接。
请参阅Quartz 2D Programming Guide, "Parameters That Affect Stroking"。