2011-12-04 25 views
1

私はbeginGraphicsContextWithOptionsで1つの画像を形成するために互いにオーバーレイするいくつかのpngを持っています....しかし、私はこれらの画像の一部を透過で描画したいと思います。どうすればいいですか?ここで透明な画像を描画する

+0

は、あなたがそれらを結合する際、画像にアルファを適用するか、またはあなただけのイメージがすでに持っていること、透明性を使用することを意味するのですか? – Ian

+0

画像に透明度がありません。私はそれらを描画するときに、一部の画像に選択的に透明度を適用したいと思います。 – RunLoop

+0

私がやることは、宛先バッファを設定し、各画像を独自のバッファに展開し、一度に1ピクセルの画像データをループし、目的のバッファにピクセルを書き込みます(目的のアルファに応じてそれをブレンドし、 )、新しいコンテキストを作成し、新しいCGImageを描画するために宛先バッファを使用し、それを使って新しいUIImageを作成します。私は今は超疲れていますが、月曜日にオフィスにいて、あなたに役立ついくつかのコードがあります。それは少なくともあなたがどこから始めるかもしれないかのアイデアを与えるはずです。その間に幸運! – Ian

答えて

0

あなたはtransparancyで画像をオーバーレイする方法を次のとおりです。

NSString* file1 = "your images file path"; 

NSRect largerect = NSRectMake(10,10,300,300); 

NSString* file2 = "your images file path"; 

NSString* file3 = "your images file path"; 

NSString* file4 = "your images file path"; 

NSImage* img1 = [[NSImage alloc] initWithContentsOfFile:file1]; 

NSImage* img2 = [[NSImage alloc] initWithContentsOfFile:file1]; 

NSImage* img3 = [[NSImage alloc] initWithContentsOfFile:file1]; 

NSImage* img4 = [[NSImage alloc] initWithContentsOfFile:file1]; 

//the fraction parameter is just how transparent you want it so 1.0 is opaque and 0.0  you will not see the image 

[image1 drawInRect: largeRect 
     fromRect: NSZeroRect 
    operation: NSCompositeSourceOver 
     fraction: 0.8]; 

[image2 drawInRect: largeRect 
     fromRect: NSZeroRect 
    operation: NSCompositeSourceOver 
     fraction: 0.6]; 

[image1 drawInRect: smallRect1 
     fromRect: NSZeroRect 
    operation: NSCompositeSourceOver 
     fraction: 0.40]; 

[image2 drawInRect: smallRect2 
     fromRect: NSZeroRect 
    operation: NSCompositeSourceOver 
     fraction: 0.40]; 
+0

申し訳ありませんが、これはiOSの質問ですが、あなたの答えは私に再び文書をチェックさせてくれました.UIImageはアルファコンポーネントのブレンドモードメソッドを持っています – RunLoop

+0

ああ、残念です! –

関連する問題