0

我希望这是有道理的。我会试着解释一下。

我在屏幕上有一个 UIImageView,我想知道如何在用手指“绘制”后获取该区域,然后从 UImage 中删除该部分,或者从选择中创建一个单独的 UIImage。

我不是在寻找代码(除非你有它 =]),只是想知道如何去做。如果您有建议,我将不胜感激,谢谢。

4

5 回答 5

0

所以基本上你想实现图像的徒手擦除?您将需要使用核心图形和各种 CGContext 方法(混合模式设置为清除)来实现这一点。有两种方法,但都从将图像绘制为的第一部分开始drawRect,然后

1)将您的笔画存储在一个数组中,并将所有笔画都放在图像的顶部。

2)在图像上划一划,然后将生成的图像存储到UIImage. 将此UIImage用作您在 drawRect 中绘制的下一个图像。这对于撤消/重做功能很困难。

于 2012-10-25T23:41:53.843 回答
0

我最近自己实现了这一点,并在此处提供了源代码。基本上,在设置图形上下文时,我使用了此处描述的相同方法进行此更改:

CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeClear);
于 2012-10-26T05:20:09.473 回答
0

如果我理解你的问题,我想我会在 UIImageView 的顶部添加一个透明的 UIView 作为子视图。并以此为基础。然后,您可以在完成后删除/隐藏子视图。

于 2012-10-25T21:26:22.423 回答
0

你需要创建一个UIGestureRecognizerwith 目标和一个类似的动作-imageIsPressed,在这个-imagePressed方法中你可以调用一些东西来使图像消失。我建议将 UIImage 放入 UIImageView 并调用imageview.hidden = YES;以隐藏图像,一旦手指没有握住它,就将其设置回“NO”。

于 2012-10-25T21:31:10.777 回答
0

您需要实现一些东西来捕获用户“选择”的区域(可能正在创建一个CGPath。然后创建一个 imageView 大小的 CALayer。在其中创建、绘制并用一些任意颜色填充捕获的路径,同时让其余部分透明。最后,您将生成的 CALayer 作为蒙版应用到 UIImageView:

imageView.layer.mask = maskLayer;

希望这能让你开始。

有关如何绘制自定义 CALayer 的更多信息,请参阅Quartz Programming Guide

于 2012-10-25T22:33:28.830 回答