Ios 如何在iPhone SDK的UIImageView中为区域着色?

Ios 如何在iPhone SDK的UIImageView中为区域着色?,ios,iphone,uiview,uiimageview,quartz-core,Ios,Iphone,Uiview,Uiimageview,Quartz Core,我有一个问题,我需要给UIImageView的图像中的不均匀区域上色 请告诉我解决问题的方法和合适的例子。我将提前感谢您 我做了一项研究,说我需要使用下面的代码来使用UIView子类 - (void)drawRect:(CGRect)rect { float polySize=60;//更改此值 CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSaveGState(context); CGAffineTransfo

我有一个问题,我需要给
UIImageView的图像中的不均匀区域上色

请告诉我解决问题的方法和合适的例子。我将提前感谢您

我做了一项研究,说我需要使用下面的代码来使用UIView子类

- (void)drawRect:(CGRect)rect
{ float polySize=60;//更改此值

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);

CGAffineTransform t0 = CGContextGetCTM(context);
t0 = CGAffineTransformInvert(t0);
CGContextConcatCTM(context, t0);

//Begin drawing setup
CGContextBeginPath(context);
CGContextSetRGBStrokeColor(context, 0, 0, 0, 1);
CGContextSetLineWidth(context, 2.0);

CGPoint center;

//Start drawing polygon
center = CGPointMake(160, 90.0);
CGContextMoveToPoint(context, center.x, center.y + polySize);
for(int i = 1; i < 6; ++i)
{
    CGFloat x = polySize * sinf(i * 2.0 * M_PI / 6);
    CGFloat y = polySize * cosf(i * 2.0 * M_PI / 6);
    CGContextAddLineToPoint(context, center.x + x, center.y + y);
}

//Finish Drawing
CGContextClosePath(context);
CGContextDrawPath(context, kCGPathStroke);
CGContextRestoreGState(context);
CGContextRef context=UIGraphicsGetCurrentContext();
CGContextSaveGState(上下文);
CGAffineTransform t0=CGContextGetCTM(上下文);
t0=CGAffineTransformInvert(t0);
CGContextConcatCTM(上下文,t0);
//开始图形设置
CGContextBeginPath(上下文);
CGContextSetRGBStrokeColor(上下文,0,0,0,1);
CGContextSetLineWidth(上下文,2.0);
点中心;
//开始绘制多边形
中心=CGPointMake(160,90.0);
CGContextMoveToPoint(上下文,center.x,center.y+polySize);
对于(int i=1;i<6;++i)
{
CGFloat x=多边形尺寸*sinf(i*2.0*M_PI/6);
CGFloat y=polySize*cosf(i*2.0*M_PI/6);
CGContextAddLineToPoint(上下文,center.x+x,center.y+y);
}
//成品图
CGContextClosePath(上下文);
CGContextDrawPath(上下文,kCGPathStroke);
CGContextRestoreGState(上下文);

}

您应该能够使用核心映像执行此操作

由于要更改的图像部分是固定的,因此可以创建一个遮罩来定义要更改的图像部分

然后,您可以使用CIMaskToAlpha来遮掩除要更改的部分以外的所有内容,然后使用Cihuead来更改未遮罩部分的色调。然后将图像的调整部分重新覆盖在顶部


或者,您可以在要更改的区域创建一个纯色图像,在其他任何地方都是透明的,然后使用CIHueBlendMode过滤器一步将彩色区域的色调应用于目标图像。

我们不是为您提供免费代码,因此,请将您试图解决此问题的内容发布到您自己的网站上。这是一个静态图像,您事先已经为其定义了轮廓吗?或者您希望在运行时找到它?我假设你不想用单一颜色覆盖整个区域,而是想在保持屋顶瓷砖纹理的同时改变色调?@duncan是的,这是一个静态图像,我知道我正在寻找颜色,然后将在彩色视图中生成纹理。@rckoenes很抱歉,我没有要求代码。我正在寻找一种方法。我正在尝试一种与UIBezierPath和CAShapeLayer合作的想法