Objective-C如何避免在具有UIBezierPath笔触颜色的相同彩色图像上绘图

时间:2013-11-28 10:21:32

标签: iphone objective-c uibezierpath

我们正在使用UIBezierPath

开展绘画应用程序

我们使用bezier路径绘制笔画,

蓝色RGB值和0.5 Alpha透明笔划

使用路径数组..我们几乎完成了应用程序,

但是PathsArray的绘画笔画有一些性能问题,它有绘制的Bezierpaths,就像绘制一些笔画后绘画笔画变慢一样,

所以为了避免这个性能问题我们在sketchImage View后面使用了一个临时图像视图,

我们在Top Sketch Image视图中最近绘制了一个笔划,并使用PathsArray更新了底部的Temperary iamge视图,

它可以正常工作并改善性能,但存在问题

由于所有笔划都保存为图像,我们尝试绘制另一个图像,笔划会加倍并增加重叠点的不透明度

实际上我们可以使用 kCGBlendModeCopy

来避免使用bezierPAths数组

但是,由于我们使用 kCGBlendModeCopy

来更新笔画

那么有没有办法避免在同一个油漆上画笔

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以通过将两个图像视图(一个是横向照片)放在另一个图像视图上来实现所需的效果,另一个图像视图就是我们要绘制的。但是,不是使用alpha绘制0.5,而是绘制UIBezierPath的{​​{1}}为1.0,而是在自己的alpha为0.5的图像视图上进行绘制。

enter image description here

alpha

答案 1 :(得分:0)

- (UIImage*)addImage:(UIImage *)image secondImage:(UIImage *)image2
{
    UIGraphicsBeginImageContext(image.size);
    [image drawInRect:CGRectMake(0,0,image.size.width,image.size.height)];

    [image2 drawInRect:CGRectMake(0,0,image.size.width,image.size.height) blendMode:kCGBlendModeXOR alpha:1.0];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage;
}

添加两个UIImages使用上面的代码。在blendMode中使用kCGBlendModeXOR