0

我已经使用 UIBezierPath 在 UIView 上实现了绘图线(它的背景是透明的。)。

对于画线,我在- (void)drawRect:(CGRect)rect方法中使用了以下代码:-

UIBezierPath *_path = [pathArray objectAtIndex:0];
[currentColor setStroke];
[_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];

这里 pathArray 是多个 UIBezierPath 对象的数组。

对于擦除绘图,我在- (void)drawRect:(CGRect)rect方法中使用了以下代码:-

UIBezierPath *_path = [pathArray objectAtIndex:10];
[[UIColor clearColor] setStroke];
[_path strokeWithBlendMode:kCGBlendModeClear alpha:1.0];

以上两种方法在透明 UIView 上绘图时效果很好。但是,当我在 UIView 上绘制白色背景色时,在我擦除绘制的地方出现了黑色。捕获绘图视图的屏幕截图时也出现了同样的问题。有什么解决办法吗?

看下面同一张图的截图,你会明白的。

4

1 回答 1

1

我自己解决了问题。我已经编写了用于擦除绘图的代码,例如:

UIBezierPath *_path = [pathArray objectAtIndex:10];
[drawingView.backgroundColor setStroke];
[_path strokeWithBlendMode:kCGBlendModeCopy alpha:1.0];

在这里,您必须设置strokeWithBlendModekCGBlendModeCopy而不是kCGBlendModeClear使用您正在绘制的视图的背景颜色。

于 2013-11-01T07:01:52.297 回答