如何使用drawinrect删除绘画中的空间?

时间:2014-08-07 10:08:25

标签: ios objective-c ios7 drawinrect

我使用以下代码在imageview的图片上绘制线条,

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
if ([touch tapCount] == 2)
    return;
lastPoint = [touch locationInView:imageview];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint currentPoint = [touch locationInView:self.view];
    CGContextSetLineCap(UIGraphicsGetCurrentContext(), 3);
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 5);
    UIGraphicsBeginImageContext(self.view.frame.size);
    [imageview.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    CGContextClearRect(UIGraphicsGetCurrentContext(), CGRectMake(lastPoint.x, lastPoint.y, 5, 5));
    imageview.image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
lastPoint = currentPoint;
}

输出

enter image description here

您可以看到点之间的间隙/间距。我需要的输出应该如下,

enter image description here

我应该在代码中更改哪些内容以消除两个点之间的空格? 我认为,您的评论不需要touchesended代码。我改变了CGContextSetLineCap和宽度,没有运气。

1 个答案:

答案 0 :(得分:0)

我会改变方法,基本上你是在捕捉触摸点,而不是"加入点"可以这么说。最好使用UIBezierPaths完成此任务。

一段时间我回答了一个问题,操作系统想要做类似的事情,但却遇到了性能问题。在我发布的答案中有代码完全按照你的意愿完成。查看这篇文章以获取完整的示例代码,您几乎可以剪切和粘贴该类(我在转录中看不到什么价值)。 Sample drawing path

如果您需要更多帮助,请告诉我