2009-07-29 28 views
2

iPhoneで画像の色を塗りつぶすには、次のコードを使用しています。iPhoneの画像の一部のみで色を塗る方法

- (UIImage *)colorizeImage:(UIImage *)baseImage color:(UIColor *)theColor { 
UIGraphicsBeginImageContext(baseImage.size); 

CGContextRef ctx = UIGraphicsGetCurrentContext(); 
CGRect area = CGRectMake(0, 0, baseImage.size.width, baseImage.size.height); 

CGContextScaleCTM(ctx, 1, -1); 
CGContextTranslateCTM(ctx, 0, -area.size.height); 

CGContextSaveGState(ctx); 
CGContextClipToMask(ctx, area, baseImage.CGImage); 

[theColor set]; 
CGContextFillRect(ctx, area); 

CGContextRestoreGState(ctx); 

CGContextSetBlendMode(ctx, kCGBlendModeMultiply); 

CGContextDrawImage(ctx, area, baseImage.CGImage); 

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 

return newImage; 

}

しかし、上記のコード画像全体に色を満たします。私はちょうど上部を感じたい、イメージの1/4thと言う。だからそれを行う方法?

+0

私はそれを考え出しました。 CGContextFillRectの行をに変更します。 CGContextFillRect(ctx、CGRectMake(0、0、baseImage.size.width、100)); – rkb

答えて

1

CGContextFillRectの行を次のように変更しました。 CGContextFillRect(ctx、CGRectMake(0、0、baseImage.size.width、100));

+0

大丈夫です。この問題はhttp://stackoverflow.com/questions/8124308/filling-a-portion-of-anage-with-colorにあります。 – Marios

+0

これはCGRECT用ですが、画像が他の形になっている場合はどうすればいいですか? ? –

関連する問題