2010-10-13 85 views
4

我是一個初學者爲iPhone開發應用程序,並想知道是否可以做到以下幾點:iphone應用程序:如何用coregraphics填充空白區域的圖像?

我有一個圖像.png這是一個簡單的圖形界定與黑色邊緣和空白區域。我想知道是否有方法或模式來填充圖像的封閉空白區域。

它就像鍋中的MSpaint填充。

我有這樣的代碼:

CGContextRef ctx = UIGraphicsGetCurrentContext(); 
UIImage *image = [UIImage imageNamed:@"myImage.png"]; 
CGContextDrawImage(context, CGRectMake(0, 0, 145, 15), image.CGImage); 
[image drawInRect:CGRectMake(0, 0, 145, 15)]; 

現在我不知道該怎麼做,以填補......

我會很感激,如果有人能回答這個問題。非常感謝你!

+0

您正在繪製圖像兩次。沒有必要這樣做。發送UIImage一個'drawInRect:'消息或調用'CGContextDrawImage'並傳遞CGImage;不要這樣做。您可能應該(僅)告訴UIImage對象進行繪製,因爲CGImage可能會繪製顛倒。 – 2010-10-13 07:29:38

回答

0

我有一個圖像......至少是......有黑邊和空白區域。

如果通過「空白」表示這些區域具有alpha零值,只需首先用所需的顏色填充上下文(填充上下文的整個範圍),然後在上面繪製圖像。顏色將顯示圖像透明的位置,而不顯示圖像不透明的位置。

與您所要求的更接近匹配的是使用複製混合模式繪製圖像,然後使用源出混合模式進行顏色填充。

Blend modes是你的朋友;好好學習,因爲你可以和他們做很多事情。

+0

對,空白區域是透明的(或alpha 0)。我對你的意思有了一個概念,但是這是否所有部件都是透明的? 想象一個男孩畫出來,我想例如用一種顏色填充頭部,用另一種顏色填充身體......如果這是至少要遵循的方法,我知道要去哪裏。 非常感謝您的回覆!雖然一個例子如果不是很複雜會幫助我很多! – karse23 2010-10-13 08:20:06

+1

是的,它可以完成所有透明部分。如果您希望用戶能夠填充特定部分,則必須通過自己在像素緩衝區上執行填充來實現填充。 Andy Finnell寫了一篇關於洪水填充算法的好文章:http://losingfight.com/blog/2007/08/28/how-to-implement-a-magic-wand-tool/ – 2010-10-13 08:35:15

+0

太棒了!再次感謝彼得! – karse23 2010-10-13 10:48:14