2011-11-03 3 views
2

私はCGContextRefを持っており、それを描いてアルファを指定することができます。それを試してみると完璧に動作します。しかし、私はそれを赤色または緑色に着色しようとしていますが、どのブレンドモードを選択するにしても、アルファはに設定されています。正しい色を描くことは実際には実行可能な選択肢ではありません。私はUIImageをファイルシステムから読み込むことができるようにしたいので、どのようにすればよいでしょうか?Colourise CGContextRefアルファを残しておきます

編集:例コード(幅と高さが所定のフロートである、点コンテキストと色の内側に位置すべてがCGPointsのアレイは、100%の不透明度とUIColorである) -

UIGraphicsBeginImageContext(CGSizeMake(width,height)); 

CGContextRef contextRef = UIGraphicsGetCurrentContext(); 
CGContextClearRect(contextRef, CGRectMake(0.0f, 0.0f, width, height)); 
CGContextSetRGBStrokeColor(contextRef, 0.0f, 0.0f, 0.0f, 1.0f); 
CGContextSetRGBFillColor(contextRef, 1.0f, 1.0f, 1.0f, 1.0f); 
CGContextSetLineWidth(contextRef, lineWidth); 

CGContextBeginPath(contextRef); 
CGContextMoveToPoint(contextRef, points[0].x, points[0].y); 
for (int i = 1; i < 4; i++) { 
    CGContextAddLineToPoint(contextRef, points[i].x, points[i].y); 
} 
CGContextAddLineToPoint(contextRef, points[0].x, points[0].y); // Encloses shape 

CGContextDrawPath(contextRef, kCGPathFillStroke); 

[color setFill]; 

CGContextBeginPath(contextRef); 
CGContextSetBlendMode(contextRef, kCGBlendModeMultiply); 
CGContextAddRect(contextRef, CGRectMake(0.0f, 0.0f, width, height)); 
CGContextDrawPath(contextRef, kCGPathFill); 

UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

感謝あなたの助けのために事前にあなたは、
jrtc27

+0

あなたの問題をよりよく見るために、いくつかのサンプルコードを教えてください。 –

+0

私の編集をご覧ください。 – jrtc27

+0

これは助けてください。私はあなたの考え方を理解しようとしているので、私が正しいのか教えてください。 ここからわかるように、透明性のない黒い枠線を持つ白い四角形を描こうとしています。次に、あなたは未知の関数[color setFill]を実行します。私はそれが何をしているのかわかりません(名前が自分自身で話しているにもかかわらず、私たちにその情報を与えたいかもしれません)。次に、以前のrectの上に同じ次元の別のパスを描きます。それから、あなたはその絵を持ってそのイメージにそれを保存したいと思っています。 –

答えて

2

私はCGContextClipToMaskが必要でした。

CGContextTranslateCTM(contextRef, 0, height); 
CGContextScaleCTM(contextRef, 1.0, -1.0); 

は、座標を変換するために、次に

CGRect rect = CGRectMake(0.0f, 0.0f, width, height); 
CGContextClipToMask(contextRef, rect, UIGraphicsGetImageFromCurrentImageContext().CGImage); 

はそれを修正する:これは私のコードは次の必須のもの。

関連する問題