2014-01-19 90 views
0

我正在用xcode爲iPhone創建遊戲。我有一個起始圖像,我想從中獲得第二張圖像,其中有一些(四個)透明區域,例如就像這樣:如何在UIImage中創建透明區域?

enter image description here

的問題是,我不知道如何去實現它;我有辦法處理原始圖像並從中剪切區域嗎?或者讓我創建一個新的圖像,我只放置原始圖像中的可見部分? 任何建議或片段將非常感激。

回答

1

那麼,我會通過創建自定義UIView子類並使用其drawRect方法來繪製該部分。 佛例如:

- (空)的drawRect :(

CGRect)rect 
{ 
    [super drawRect:rect]; 

    CGContextRef ctx = UIGraphicsGetCurrentContext(); // get drawing context 

    CGContextSaveGState(ctx); //remember current state 
    CGContextClipToRect(ctx, CGRectMake(0, 0, 100, 100)); //set clipping 
    CGContextDrawImage(ctx, CGRectMake(0, 0, img.size.width, img.size.height), img.CGImage); 
    CGContextRestoreGState(ctx); //restore state, so the previous clipping will be canceled 

    CGContextSaveGState(ctx); 
    CGContextClipToRect(ctx, CGRectMake(100, 100, 100, 100)); 
    CGContextDrawImage(ctx, CGRectMake(0, 0, img.size.width, img.size.height), img.CGImage); 
    CGContextRestoreGState(ctx); 
} 

這將引起兩個小rects在這段代碼IMG是一個UIImage的

然而,這是應該做的最簡單的方法。這不是最有效的 - 它需要重繪每一部分,你可能想要檢查CGContextClipToRects和CGContextClip函數,使它更高效和更靈活

+0

哦,非常感謝,它的工作原理(即使兩個小矩形出現顛倒......)無論如何,一個非常好的撻點;) – xabaras78

+0

我解決了它取代CGContextDrawImage與[img drawAtPoint:CGPointMake(0,0)] ... :) – xabaras78

相關問題