0

我在 iOS 中实现了一种图像蒙版功能,类似于 Blender 应用程序中提供的带有两个图像的功能。这是我的触摸移动代码:-

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{

    UITouch *touch = [touches anyObject];
    CGPoint currentPoint = [touch locationInView:staticBG1];

    UIGraphicsBeginImageContext(view.frame.size);
    [image_1 drawInRect:CGRectMake(0, 0, view.frame.size.width, view.frame.size.height)];

    CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 20.0);
    CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1.0, 0.0, 0.0, 1.0);
    CGContextBeginPath(UIGraphicsGetCurrentContext());
    CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
    CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
    CGContextStrokePath(UIGraphicsGetCurrentContext());

    image_1 = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    lastPoint = currentPoint;
    mouseMoved++;
    if (mouseMoved == 10)
        mouseMoved = 0;
}

上面的代码正在生成如下效果:

现在我真正想要的不是明亮的红线,而是那些地方另一幅图像的像素。两个图像具有相同的尺寸。我该怎么做??我试图实现我的手动图像处理方法我的像素访问,但它太慢了,这将实时完成。

是否有任何替代方法:CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1.0, 0.0, 0.0, 1.0); ?

4

1 回答 1

2

不要在路径中绘制颜色或图案,绘制透明度。您需要在要删除的图像后面的自己的图层中放置一个图像。像现在一样创建路径,但不是设置颜色,而是将混合模式设置为清除 ( kCGBlendModeClear)。

这将删除图像的某些部分,以便您可以看到下面的图像。


代替:

CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1.0, 0.0, 0.0, 1.0);

和:

CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeClear); 
于 2013-10-07T07:11:08.047 回答