Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 不包括A";“油漆桶”;在图像上填充_Objective C_Ios_Drawing_Core Graphics_Masking - Fatal编程技术网

Objective c 不包括A";“油漆桶”;在图像上填充

Objective c 不包括A";“油漆桶”;在图像上填充,objective-c,ios,drawing,core-graphics,masking,Objective C,Ios,Drawing,Core Graphics,Masking,我正在构建一个iPhone应用程序,它需要以非常特定的方式构建一些图像。这个问题很难解释,所以下面是我试图实现的一个图表。基本上,我想在UIImage(将是PNG)上“绘制桶”填充。我想这里的“油漆桶”一词等同于一种颜色 在那之后,我想创建一个遮罩对象(它将是可更新的,可能由多个形状组成),然后当我对原始图像应用另一个着色/绘制桶时,构建遮罩覆盖的区域将不受影响。这基本上就像在一个物体上缠上胶带,画上它,然后取下胶带。正如我所承诺的,这里有一张我所追求的图表。需要注意的是,尽管我在这里使用了一个

我正在构建一个iPhone应用程序,它需要以非常特定的方式构建一些图像。这个问题很难解释,所以下面是我试图实现的一个图表。基本上,我想在UIImage(将是PNG)上“绘制桶”填充。我想这里的“油漆桶”一词等同于一种颜色

在那之后,我想创建一个遮罩对象(它将是可更新的,可能由多个形状组成),然后当我对原始图像应用另一个着色/绘制桶时,构建遮罩覆盖的区域将不受影响。这基本上就像在一个物体上缠上胶带,画上它,然后取下胶带。正如我所承诺的,这里有一张我所追求的图表。需要注意的是,尽管我在这里使用了一个十字,但最终模式可能会非常复杂,必须在PNG中,而不是在代码中创建。感谢您可能提供的任何帮助

在白色背景上创建一个黑色的十字架(或任何你想要的形状)。使用
CGContextClipToMask
将其应用于图形上下文。然后使用
CGContextFillRect
用蓝色填充上下文的边界。像这样的东西应该可以做到:

CGRect bounds = your context bounds;
CGContextRef gc = your context;
UIImage *cross = [UIImage imageNamed:@"cross"];
CGContextSaveGState(gc); {
    CGContextClipToMask(gc, bounds, cross.CGImage);
    CGContextSetColorWithColor(gc, [UIColor blueColor].CGColor);
    CGContextFillRect(gc, bounds);
} CGContextRestoreGState(gc);

谢谢你的回复@rob。对不起,我对这些C语句是一个相当陌生的人(最近一直在制作普通的“应用程序”)。要在屏幕上实际渲染,下一步是什么?此外,使用此方法,是否也可以添加多个遮罩(因此可能是一个十字、圆圈等)?此外,行CGContextSetColorWithColor(gc[UIColor blueColor].CGColor);正在导致编译错误(“未找到体系结构i386的ld:symbol。clang:error:linker命令失败,退出代码为1”)。我用“CGContextSetRGBFillColor”替换了它,但没有显示任何内容。而且听起来你需要学习一两个Quartz(核心图形)教程。谢谢你的帮助,罗布。是的,最好自己解决这个问题,而不是靠施舍过活。我只是对在屏幕上实际呈现代码感到好奇。我将围绕代码展开工作,以便自己更全面地理解它:)