J'ai un uiimage contenant une image avec un tas d'images plus petites sur l'image (essentiellement une bande d'image contenant des sprites). Je voudrais dessiner un seul sprite sur une zone de mon uiview. P>
Je n'arrive pas à trouver un moyen d'attirer une partie de l'uImage sur la vue. Y a-t-il une méthode qui fait cela? P>
3 Réponses :
Yep, vous pouvez sûr avec quartz.
Il y a un tutoriel ici qui vous montre comment prendre un uImage et masquer une partie de celui-ci. p>
http://iosdevelopertaux.com/cocoa/how-to-mask-an-image.html P>
Voici le code de cette page (en cas d'incassième dépasse une raison quelconque) P>
- (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]; }
C'est de bonnes choses et je vais certainement le signet mais je ne veux pas créer de masque pour cela. Je veux simplement faire quelque chose comme: [[[[[UIIMAGE Imagenamed: @ "myImage"] Drawinrect: CGMakerect (10,10,50,50,50) FromRect: CGMakerect (60,60 50h50)];
Je pense que vous recherchez peut-être CGIMAGEReReewithImageRect () . Vous pouvez obtenir un EDIT: Une autre option qui existe en 2014, qui n'a pas été en 2009, est Spritekit . Selon ce que vous pourriez faire cela nécessite une feuille Sprite, cela pourrait être utile. P> cgimage code> à partir d'un
uiimage code> avec le Propriété du même nom . P>
Bon @sixten, je pense que cela ressemble plus à ce qu'il voulait +1
Fonctionne parfaitement (moins certains maux de tête avec Cgimages sont retournés lors du dessin). Merci.
J'ai écrit une catégorie UIImage pour la manipulation des feuilles de sprite. Consultez ceci, il peut être utile http: / /reecon.wardpress.com/2011/11/19/UIIIMAGE-SPRITE-ADDITI ONS-Object-C /
Cette approche a une incidence sur la performance au cas où le dessin est intensif. Existe-t-il un moyen sans recréer des parties de l'image, mais utilisez simplement des données bitmap disponibles à partir de l'instance UIImage donnant?
Le libellé de la documentation me suggère vivement que cette fonction fait i> réutiliser les données bitmap existantes et modifie simplement les limites de quelles parties de ces données sont "dans" l'image. Mais il existe certainement des fonctions de quartz pour obtenir les données bitmap sous-jacentes.
J'ai écrit un Comme indiqué précédemment, cette catégorie base sur Lien vers la page HUB GIT:
https://github.com/r3econ/uiImage-sprite-additions P>
Vous pouvez également installer à l'aide de gousses de cacao. P> UiImage code> catégorie pour la manutention des feuilles de sprite. Vérifiez cela, il peut être utile http: // reecon.wordpress.com/2011/11/19/uiImage-sprite-additions-Objective-c/ P>
cgimagecreatewithImageRect () code> mais fait le processus d'extraction des sprites à une seule feuille Sprite très loin