2010-05-19 21 views
2

J'ai donc une feuille de sprites au format png, et j'ai déjà calculé les coordonnées de ce que je veux afficher. J'essaye de créer une méthode qui retournera un UIImage quand passé les informations d'emplacement sur la feuille de sprites. Je ne suis pas sûr de savoir comment utiliser le CGContext avec les coordonnées pour retourner un UIImage. Je cherchais à CGContextClipToRect parce que je pense que c'est la façon de le faire, mais je n'arrive pas à le faire fonctionner.Utiliser CGContext pour afficher une feuille de sprite iPhone

Quelque chose comme ce

CGSize size = CGSizeMake(xSize, ySize);
UIGraphicsBeginImageContext(size);
//CGContextClipToRect(spriteSheet.size, imageRect);
[spriteSheet drawAtPoint:CGPointMake(xPos, yPos)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;

ne renvoie que ce qui est dans le contexte de la taille. Je dois être capable de "déplacer" cette fenêtre de taille autour de la feuille de sprite si cela a du sens.

Toute aide serait appréciée.

Merci, Mike

Répondre

9

Je pense que l'appel que vous souhaitez utiliser est CGImageCreateWithImageInRect

newImage = [UIImage imageWithCGImage:CGImageCreateWithImageInRect([spriteSheet CGImage] , imageRect)]; 
+0

Merci beaucoup! Je regardais partout et tout ce dont j'avais besoin était cette ligne. Fonctionne bien – Mike

+0

Voici comment je l'ai fait, mais j'ai rencontré des problèmes de performance, en raison de la taille et du nombre de sprites utilisés. L'utilisation de CGImageCreateWithImageInRect, puis la copie de cette image a amélioré les performances de l'animation, au prix d'un temps de chargement plus long. – Saltymule

0

vous devez penser à vos coordonnées en arrière. Le CGSize est fixe. Traduisez vos xPos, yPos pour que votre sprite apparaisse sous la fenêtre.