2009-10-26 62 views
7

我有一個UIImage包含一個圖像與圖像上的一大堆小圖片(本質上是一個包含精靈的圖像條)。我想繪製一個單一的精靈到我的UIView區域。繪製UIImage的選定區域

我似乎無法找到一種方法只將部分UIImage繪製到視圖上。有沒有這樣的方法?

回答

8

我想你可能會尋找CGImageCreateWithImageInRect()。您可以從UIImageproperty of the same name獲得CGImage

編輯:存在於2014年的另一個選項是2009年沒有的SpriteKit。根據你可能需要做什麼需要一個精靈表,這可能是有用的。

+0

謝謝,現在就試試這個。 – rein 2009-10-26 21:11:59

+0

好的@Sixten,我覺得這聽起來更像他想要的+1 – 2009-10-26 21:13:42

+0

完美的作品(減去CGImages在繪圖時被翻轉的一些令人頭痛的問題)。謝謝。 – rein 2009-10-26 21:49:14

2

是的,你確定可以用石英。

這裏有一個教程,告訴你如何獲取UIImage並掩飾它的一部分。

http://iosdevelopertips.com/cocoa/how-to-mask-an-image.html

下面是從頁面的代碼(櫃面它會因爲某些原因)

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage { 

    CGImageRef maskRef = maskImage.CGImage; 

    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef), 
     CGImageGetHeight(maskRef), 
     CGImageGetBitsPerComponent(maskRef), 
     CGImageGetBitsPerPixel(maskRef), 
     CGImageGetBytesPerRow(maskRef), 
     CGImageGetDataProvider(maskRef), NULL, false); 

    CGImageRef masked = CGImageCreateWithMask([image CGImage], mask); 
    return [UIImage imageWithCGImage:masked]; 

} 
+0

這是很棒的東西,我一定會收藏它,但我不想爲此創建一個蒙版。我只是想做一些事情:[[UIImage imageNamed:@「myimage」] drawInRect:CGMakeRect(10,10,50,50)fromRect:CGMakeRect(60,60,50,50)]; – rein 2009-10-26 21:10:00