2009-10-26 8 views
7

J'ai un UIImage contenant une image avec tout un tas de petites images sur l'image (essentiellement une bande d'image contenant des sprites). J'aimerais dessiner un seul sprite sur une zone de mon UIView.Dessiner des zones sélectionnées d'un UIImage

Je n'arrive pas à trouver un moyen d'attirer seulement une partie de l'UIImage sur la vue. Y a-t-il une méthode qui fait cela?

Répondre

8

Je pense que vous cherchez peut-être CGImageCreateWithImageInRect(). Vous pouvez obtenir un CGImage à partir d'un UIImage avec le property of the same name.

EDIT: une autre option qui existe en 2014, qui n'a pas été en 2009, est SpriteKit. En fonction de ce que vous pourriez faire qui a besoin d'une feuille de sprite, cela pourrait être utile.

+0

Merci, en essayant maintenant. – rein

+0

Un bon @Sixten, je pense que cela ressemble plus à ce qu'il voulait +1 –

+0

Fonctionne parfaitement (moins quelques maux de tête avec CGImages étant retourné pendant le dessin). Merci. – rein

2

Oui, vous pouvez certainement avec Quartz.

Il ya un tutoriel ici qui vous montre comment prendre un UIImage et en masquer une partie.

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

Voici le code de cette page (Incase il va vers le bas pour une raison quelconque)

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

C'est génial et je vais certainement le marquer mais je ne veux pas créer de masque pour ça. Je veux simplement faire quelque chose comme: [[UIImage imageNamed: @ "myimage"] drawInRect: CGMakeRect (10,10,50,50) fromRect: CGMakeRect (60,60,50,50)]; – rein

3

J'ai écrit une catégorie UIImage pour la manipulation des feuilles de sprite. Check this out, il peut être utile http://reecon.wordpress.com/2011/11/19/uiimage-sprite-additions-objective-c/

Comme indiqué plus haut, cette catégorie bases sur CGImageCreateWithImageInRect() mais rend le processus d'extraction sprites à partir d'une seule feuille de sprite bien plus pratique et plus rapide.

Lien vers la page hub git: https://github.com/r3econ/UIImage-Sprite-Additions

Vous pouvez également installer en utilisant les gousses de cacao.