我在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); ?
答案 0 :(得分:2)
不要在路径中绘制颜色或图案,绘制透明度。在要擦除的图像后面的图层后面需要一个图像。像现在一样创建路径,但不是设置颜色,而是将混合模式设置为clear(kCGBlendModeClear
)。
这将删除图像的各个部分,以便您查看下面的图像。
替换:
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1.0, 0.0, 0.0, 1.0);
使用:
CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeClear);