【问题标题】:How to remove space in painting using drawinrect?如何使用drawinrect删除绘画中的空间?
【发布时间】:2014-09-30 12:44:01
【问题描述】:

我正在使用以下代码在 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;
}

输出

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

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

【问题讨论】:

    标签: ios objective-c ios7 drawinrect


    【解决方案1】:

    我会改变方法,本质上你是在捕捉接触点,而不是“连接点”可以这么说。你最好使用 UIBezierPaths 来完成这个任务。

    前段时间我回答了一个问题,操作员想要做类似的事情,但遇到了性能问题。我发布的答案中有代码完全可以满足您的要求。查看这篇文章以获取完整的示例代码,您几乎可以剪切和粘贴该类(我认为转录几乎没有价值)。 Sample drawing path

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-05
      • 2017-06-07
      相关资源
      最近更新 更多