2009-10-26 11 views
7

Posiadam UIImage zawierający obraz z całą masą mniejszych obrazów na obrazie (w zasadzie pasek obrazu zawierający sprite). Chciałbym narysować pojedynczy ikonkę na obszarze mojego UIView.Rysowanie wybranych obszarów obiektu UIImage

Nie mogę znaleźć sposobu na losowanie tylko części UIImage na widoku. Czy istnieje metoda, która to robi?

Odpowiedz

8

myślę, że może być szukasz CGImageCreateWithImageInRect(). Możesz uzyskać CGImage z UIImage z property of the same name.

EDYCJA: inną opcją, która istnieje w 2014 r., A która nie miała miejsca w 2009 r., Jest SpriteKit. W zależności od tego, co robisz, potrzebujesz arkusza sprite'a, który może być przydatny.

+0

Dzięki, próbuję tego teraz. – rein

+0

Dobrze @Sixten, myślę, że to brzmi bardziej jak to, co chciał +1 –

+0

Działa idealnie (minus niektóre bóle głowy z CGImages odwracane podczas rysowania). Dzięki. – rein

2

Tak, na pewno można z Quartz.

Istnieje tutorial, który pokazuje, jak wykonać UIImage i zamaskować jego część.

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

Oto kod z tej strony (okrywać to idzie w dół z jakiegoś powodu)

- (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

To są świetne rzeczy i na pewno dodam do nich zakładkę, ale nie chcę tworzyć maski. Po prostu chcę zrobić coś takiego: [[UIImage imageNamed: @ "myimage"] drawInRect: CGMakeRect (10, 1050,50) fromRect: CGMakeRect (60, 5050,50)]; – rein

3

Napisałem kategorię UIImage do obsługi arkuszy sprite. Sprawdź to, może to być pomocne http://reecon.wordpress.com/2011/11/19/uiimage-sprite-additions-objective-c/

Jak wspomniano wcześniej, ta kategoria baz na CGImageCreateWithImageInRect() ale sprawia, że ​​proces wydobycia ikonek z pojedynczego arkusza sprite daleko wygodniejszego i szybciej.

Link do git stronie piasty: https://github.com/r3econ/UIImage-Sprite-Additions

Można również zainstalować za pomocą strąki kakao.